pidgin/gtkutils.c

Fri, 13 Sep 2013 13:06:29 +0200

author
Tomasz Wasilczyk <twasilczyk@pidgin.im>
date
Fri, 13 Sep 2013 13:06:29 +0200
changeset 34345
be0d28873c0b
parent 34338
c652670afac5
child 34447
be84e0a7e68d
child 34944
0d5d42e2c0d6
permissions
-rw-r--r--

Pidgin: don't parent on windows being destroyed

5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
1 /**
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14781
diff changeset
2 * @file gtkutils.c GTK+ utility functions
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16123
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20036
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20036
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 20036
diff changeset
6 /* pidgin
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15884
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
8046
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7988
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
c581b20a47d6 [gaim-migrate @ 8730]
Sean Egan <seanegan@pidgin.im>
parents: 7988
diff changeset
10 * source distribution.
7060
717cbeb22b6d [gaim-migrate @ 7623]
Christian Hammond <chipx86@chipx86.com>
parents: 6846
diff changeset
11 *
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 * (at your option) any later version.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
20 * GNU General Public License for more details.
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
21 *
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19547
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
25 */
24569
5dbd0617a27d Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@pidgin.im>
parents: 23501
diff changeset
26 #define _PIDGIN_GTKUTILS_C_
5dbd0617a27d Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@pidgin.im>
parents: 23501
diff changeset
27
9791
f5c5bda0b96b [gaim-migrate @ 10659]
Gary Kramlich <grim@pidgin.im>
parents: 9767
diff changeset
28 #include "internal.h"
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
29 #include "pidgin.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
30
33477
ed01a53b8afc These changes were what I needed to be able to build on a Macbook Pro with OS
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 33359
diff changeset
31 #ifdef _WIN32
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
32 # ifdef small
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
33 # undef small
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
34 # endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
35 #endif /*_WIN32*/
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
36
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
37 #ifdef USE_GTKSPELL
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
38 # include <gtkspell/gtkspell.h>
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
39 # ifdef _WIN32
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
40 # include "wspell.h"
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
41 # endif
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
42 #endif
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
43
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
44 #include <gdk/gdkkeysyms.h>
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
45
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
46 #include "conversation.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
47 #include "debug.h"
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
48 #include "desktopitem.h"
7078
0d63d673f170 [gaim-migrate @ 7643]
Nathan Walp <nwalp@pidgin.im>
parents: 7060
diff changeset
49 #include "imgstore.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
50 #include "notify.h"
5548
200682124464 [gaim-migrate @ 5949]
Nathan Walp <nwalp@pidgin.im>
parents: 5530
diff changeset
51 #include "prefs.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
52 #include "prpl.h"
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
53 #include "request.h"
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
54 #include "signals.h"
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
55 #include "sound.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
56 #include "util.h"
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
57
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
58 #include "gtkaccount.h"
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
59 #include "gtkprefs.h"
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
60
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
61 #include "gtkconv.h"
9709
2e73f176cc80 [gaim-migrate @ 10570]
Mark Doliner <markdoliner@pidgin.im>
parents: 9706
diff changeset
62 #include "gtkdialogs.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
63 #include "pidginstock.h"
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
64 #include "gtkthemes.h"
5872
754c63f29b77 [gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents: 5794
diff changeset
65 #include "gtkutils.h"
32518
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
66 #include "gtkwebview.h"
32807
fd1e8f1449a5 Use a GtkWebViewToolbar when creating an editable GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32749
diff changeset
67 #include "gtkwebviewtoolbar.h"
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
68 #include "pidgin/minidialog.h"
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
69
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
70 #include "gtk3compat.h"
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
71
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
72 enum {
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
73 AOP_ICON_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
74 AOP_NAME_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
75 AOP_DATA_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
76 AOP_COLUMN_COUNT
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
77 };
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
78
17118
4fbaa628dd8e Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17117
diff changeset
79 typedef struct {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
80 GtkTreeModel *model;
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
81 gint default_item;
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
82 } AopMenu;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
83
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10681
diff changeset
84 static guint accels_save_timer = 0;
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
85 static GSList *registered_url_handlers = NULL;
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
86
8913
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
87 static gboolean
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
88 url_clicked_idle_cb(gpointer data)
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
89 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
90 purple_notify_uri(NULL, data);
8913
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
91 g_free(data);
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
92 return FALSE;
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
93 }
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
94
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
95 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
96 url_clicked_cb(GtkWebView *unused, const char *uri)
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6430
diff changeset
97 {
8913
8380459a6da6 [gaim-migrate @ 9683]
Tim Ringenbach <marv@pidgin.im>
parents: 8901
diff changeset
98 g_idle_add(url_clicked_idle_cb, g_strdup(uri));
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
99 return TRUE;
6465
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6430
diff changeset
100 }
bd201d637ff4 [gaim-migrate @ 6974]
Christian Hammond <chipx86@chipx86.com>
parents: 6430
diff changeset
101
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
102 void
32809
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
103 pidgin_setup_webview(GtkWidget *webview)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
104 {
32809
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
105 g_return_if_fail(webview != NULL);
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
106 g_return_if_fail(GTK_IS_WEBVIEW(webview));
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
107
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
108 pidgin_themes_smiley_themeize(webview);
15506
03be1365a163 GNOME has a 'document font' setting that we should use when running on GNOME. This does the gconftool-2 spawning trick to get it
Sean Egan <seanegan@pidgin.im>
parents: 15497
diff changeset
109
28908
d8538334b167 I *think* this properly adds back the font preference stuff I axed earlier, but
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28878
diff changeset
110 #ifdef _WIN32
17487
2d9c6631e922 Reluctantly, I've added a preference for overriding the GTK+ default theme in GtkIMHtml widgets. There is support for this feature in the GNOME HIG and in other GTK+ (including GNOME) applications. This fixes #494. This is a GTK+ 2.4-only feature. I don't update the fonts in existing gtkimhtml's yet, only in new ones. Someone else may want to take care of that
Sean Egan <seanegan@pidgin.im>
parents: 17385
diff changeset
111 if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/use_theme_font")) {
32809
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
112 WebKitWebSettings *settings = webkit_web_settings_new();
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
113 g_object_set(G_OBJECT(settings), "default-font-size",
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
114 purple_prefs_get_int(PIDGIN_PREFS_ROOT "/conversations/font_size"),
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
115 NULL);
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
116 g_object_set(G_OBJECT(settings), "default-font-family",
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
117 purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/custom_font"),
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
118 NULL);
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
119
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
120 webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webview), settings);
33499
ba4d2f8a8025 Fix possible leak. The settings object is ref'd by set_settings.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33360
diff changeset
121 g_object_unref(settings);
17487
2d9c6631e922 Reluctantly, I've added a preference for overriding the GTK+ default theme in GtkIMHtml widgets. There is support for this feature in the GNOME HIG and in other GTK+ (including GNOME) applications. This fixes #494. This is a GTK+ 2.4-only feature. I don't update the fonts in existing gtkimhtml's yet, only in new ones. Someone else may want to take care of that
Sean Egan <seanegan@pidgin.im>
parents: 17385
diff changeset
122 }
28908
d8538334b167 I *think* this properly adds back the font preference stuff I axed earlier, but
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28878
diff changeset
123 #endif
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
124 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
125
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
126 static
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
127 void pidgin_window_init(GtkWindow *wnd, const char *title, guint border_width, const char *role, gboolean resizable)
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
128 {
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
129 if (title)
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
130 gtk_window_set_title(wnd, title);
18941
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
131 #ifdef _WIN32
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
132 else
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
133 gtk_window_set_title(wnd, PIDGIN_ALERT_TITLE);
995cf072aa9b Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <datallah@pidgin.im>
parents: 18672
diff changeset
134 #endif
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
135 gtk_container_set_border_width(GTK_CONTAINER(wnd), border_width);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
136 if (role)
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
137 gtk_window_set_role(wnd, role);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
138 gtk_window_set_resizable(wnd, resizable);
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
139 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
140
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
141 GtkWidget *
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
142 pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
143 {
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
144 GtkWindow *wnd = NULL;
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
145
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
146 wnd = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
147 pidgin_window_init(wnd, title, border_width, role, resizable);
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
148
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
149 return GTK_WIDGET(wnd);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
150 }
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
151
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
152 GtkWidget *
29896
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
153 pidgin_create_small_button(GtkWidget *image)
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
154 {
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
155 GtkWidget *button;
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
156
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
157 button = gtk_button_new();
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
158 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
159
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
160 /* don't allow focus on the close button */
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
161 gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
162
29898
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
163 /* set style to make it as small as possible */
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
164 gtk_widget_set_name(button, "pidgin-small-close-button");
29896
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
165
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
166 gtk_widget_show(image);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
167
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
168 gtk_container_add(GTK_CONTAINER(button), image);
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
169
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
170 return button;
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
171 }
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
172
fd9614c33141 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29744
diff changeset
173 GtkWidget *
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
174 pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
175 {
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
176 GtkWindow *wnd = NULL;
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
177
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
178 wnd = GTK_WINDOW(gtk_dialog_new());
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
179 pidgin_window_init(wnd, title, border_width, role, resizable);
17213
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
180
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
181 return GTK_WIDGET(wnd);
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
182 }
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
183
25a0ae0d0ff7 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
184 GtkWidget *
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
185 pidgin_dialog_get_vbox_with_properties(GtkDialog *dialog, gboolean homogeneous, gint spacing)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
186 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
187 GtkBox *vbox = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
188 gtk_box_set_homogeneous(vbox, homogeneous);
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
189 gtk_box_set_spacing(vbox, spacing);
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
190 return GTK_WIDGET(vbox);
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
191 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
192
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
193 GtkWidget *pidgin_dialog_get_vbox(GtkDialog *dialog)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
194 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
195 return gtk_dialog_get_content_area(GTK_DIALOG(dialog));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
196 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
197
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
198 GtkWidget *pidgin_dialog_get_action_area(GtkDialog *dialog)
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
199 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
200 return gtk_dialog_get_action_area(GTK_DIALOG(dialog));
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
201 }
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
202
22005
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
203 GtkWidget *pidgin_dialog_add_button(GtkDialog *dialog, const char *label,
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
204 GCallback callback, gpointer callbackdata)
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
205 {
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
206 GtkWidget *button = gtk_button_new_from_stock(label);
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
207 GtkWidget *bbox = pidgin_dialog_get_action_area(dialog);
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
208 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
209 if (callback)
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
210 g_signal_connect(G_OBJECT(button), "clicked", callback, callbackdata);
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
211 gtk_widget_show(button);
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
212 return button;
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
213 }
0183020ba2cc Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22000
diff changeset
214
22000
5e7708f58d3d Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
215 GtkWidget *
34274
9169710b5af5 Hide GtkWebViewToolbar stuff within the GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34208
diff changeset
216 pidgin_create_webview(gboolean editable, GtkWidget **webview_ret, GtkWidget **sw_ret)
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
217 {
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
218 GtkWidget *frame;
32518
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
219 GtkWidget *webview;
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
220 GtkWidget *sep;
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
221 GtkWidget *sw;
10177
9471d38bd527 [gaim-migrate @ 11292]
Christian Hammond <chipx86@chipx86.com>
parents: 10175
diff changeset
222 GtkWidget *toolbar = NULL;
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
223 GtkWidget *vbox;
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
224
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
225 frame = gtk_frame_new(NULL);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
226 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
227
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
228 vbox = gtk_vbox_new(FALSE, 0);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
229 gtk_container_add(GTK_CONTAINER(frame), vbox);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
230 gtk_widget_show(vbox);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
231
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
232 if (editable) {
32807
fd1e8f1449a5 Use a GtkWebViewToolbar when creating an editable GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32749
diff changeset
233 toolbar = gtk_webviewtoolbar_new();
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
234 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
235 gtk_widget_show(toolbar);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
236
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
237 sep = gtk_hseparator_new();
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
238 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
14607
fd7b88ef59c0 [gaim-migrate @ 17266]
Sean Egan <seanegan@pidgin.im>
parents: 14290
diff changeset
239 g_signal_connect_swapped(G_OBJECT(toolbar), "show", G_CALLBACK(gtk_widget_show), sep);
fd7b88ef59c0 [gaim-migrate @ 17266]
Sean Egan <seanegan@pidgin.im>
parents: 14290
diff changeset
240 g_signal_connect_swapped(G_OBJECT(toolbar), "hide", G_CALLBACK(gtk_widget_hide), sep);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
241 gtk_widget_show(sep);
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
242 }
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
243
34276
2b602f67f875 Make editable-ness a construct-only property of the GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 34274
diff changeset
244 webview = gtk_webview_new(editable);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
245 if (editable && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
33021
3dc4b2cdba7f Enable spell checking in an editable webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32939
diff changeset
246 pidgin_webview_set_spellcheck(GTK_WEBVIEW(webview), TRUE);
32518
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
247 gtk_widget_show(webview);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
248
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
249 if (editable) {
32807
fd1e8f1449a5 Use a GtkWebViewToolbar when creating an editable GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32749
diff changeset
250 gtk_webviewtoolbar_attach(GTK_WEBVIEWTOOLBAR(toolbar), webview);
fd1e8f1449a5 Use a GtkWebViewToolbar when creating an editable GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32749
diff changeset
251 gtk_webviewtoolbar_associate_smileys(GTK_WEBVIEWTOOLBAR(toolbar), "default");
34292
30107eb2ff81 Fix compiler warnings, make build even more silent
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34276
diff changeset
252 gtk_webview_set_toolbar(GTK_WEBVIEW(webview), toolbar);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
253 }
32809
5f024465ef89 Add a WebView setup function.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32807
diff changeset
254 pidgin_setup_webview(webview);
32518
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
255
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
256 sw = pidgin_make_scrollable(webview, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, -1);
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: 31217
diff changeset
257 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
258
32518
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
259 gtk_webview_set_vadjustment(GTK_WEBVIEW(webview),
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
260 gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(sw)));
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
261
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
262 if (webview_ret != NULL)
f3ed9129c573 Add a pidgin_create_webview utility function, which acts similarly to
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32287
diff changeset
263 *webview_ret = webview;
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
264
13281
3558cb15ebb9 [gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents: 13203
diff changeset
265 if (sw_ret != NULL)
3558cb15ebb9 [gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents: 13203
diff changeset
266 *sw_ret = sw;
3558cb15ebb9 [gaim-migrate @ 15646]
Richard Laager <rlaager@pidgin.im>
parents: 13203
diff changeset
267
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
268 return frame;
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
269 }
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
270
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
271 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
272 pidgin_set_sensitive_if_input(GtkWidget *entry, GtkWidget *dialog)
7751
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
273 {
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
274 const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
275 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK,
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
276 (*text != '\0'));
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
277 }
e0dc18b50181 [gaim-migrate @ 8396]
Mark Doliner <markdoliner@pidgin.im>
parents: 7717
diff changeset
278
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
279 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
280 pidgin_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle)
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
281 {
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
282 gboolean sensitivity;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
283
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
284 if (to_toggle == NULL)
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
285 return;
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
286
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
287 sensitivity = gtk_widget_get_sensitive(to_toggle);
4359
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
288
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
289 gtk_widget_set_sensitive(to_toggle, !sensitivity);
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
290 }
cf899ee07d1d [gaim-migrate @ 4625]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
291
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
292 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
293 pidgin_toggle_sensitive_array(GtkWidget *w, GPtrArray *data)
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
294 {
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
295 gboolean sensitivity;
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
296 gpointer element;
34308
cdb187c27360 Fix the rest of Pidgin's warnings about -Wsign-compare; remove -Wno-sign-compare from cflags
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 34292
diff changeset
297 guint i;
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
298
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
299 for (i=0; i < data->len; i++) {
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
300 element = g_ptr_array_index(data,i);
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
301 if (element == NULL)
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
302 continue;
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
303
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
304 sensitivity = gtk_widget_get_sensitive(element);
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
305
10175
2bf5ed145e8a [gaim-migrate @ 11290]
Mark Doliner <markdoliner@pidgin.im>
parents: 10061
diff changeset
306 gtk_widget_set_sensitive(element, !sensitivity);
5314
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
307 }
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
308 }
56ef6a09fb99 [gaim-migrate @ 5686]
Christian Hammond <chipx86@chipx86.com>
parents: 5162
diff changeset
309
8901
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
310 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
311 pidgin_toggle_showhide(GtkWidget *widget, GtkWidget *to_toggle)
8901
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
312 {
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
313 if (to_toggle == NULL)
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
314 return;
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
315
32913
af2c726febce Fix all deprecated GTK_WIDGET_* macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32900
diff changeset
316 if (gtk_widget_get_visible(to_toggle))
8901
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
317 gtk_widget_hide(to_toggle);
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
318 else
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
319 gtk_widget_show(to_toggle);
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
320 }
0a8334a14c2d [gaim-migrate @ 9670]
Mark Doliner <markdoliner@pidgin.im>
parents: 8881
diff changeset
321
17359
6dd3b7730470 Change pidgin_separator to return the separator added to the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17155
diff changeset
322 GtkWidget *pidgin_separator(GtkWidget *menu)
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
323 {
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
324 GtkWidget *menuitem;
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
325
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
326 menuitem = gtk_separator_menu_item_new();
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
327 gtk_widget_show(menuitem);
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
328 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
17359
6dd3b7730470 Change pidgin_separator to return the separator added to the menu.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17155
diff changeset
329 return menuitem;
4687
91ad36873636 [gaim-migrate @ 4998]
Sean Egan <seanegan@pidgin.im>
parents: 4398
diff changeset
330 }
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
331
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
332 GtkWidget *pidgin_new_item(GtkWidget *menu, const char *str)
5162
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
333 {
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
334 GtkWidget *menuitem;
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
335 GtkWidget *label;
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
336
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
337 menuitem = gtk_menu_item_new();
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
338 if (menu)
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
339 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
340 gtk_widget_show(menuitem);
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
341
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
342 label = gtk_label_new(str);
6371
e92b66ee5518 [gaim-migrate @ 6876]
Christian Hammond <chipx86@chipx86.com>
parents: 6236
diff changeset
343 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5162
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
344 gtk_label_set_pattern(GTK_LABEL(label), "_");
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
345 gtk_container_add(GTK_CONTAINER(menuitem), label);
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
346 gtk_widget_show(label);
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
347 /* FIXME: Go back and fix this
5162
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
348 gtk_widget_add_accelerator(menuitem, "activate", accel, str[0],
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
349 GDK_MOD1_MASK, GTK_ACCEL_LOCKED);
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
350 */
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
351 pidgin_set_accessible_label (menuitem, label);
5162
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
352 return menuitem;
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
353 }
f8293b913629 [gaim-migrate @ 5526]
Mark Doliner <markdoliner@pidgin.im>
parents: 5160
diff changeset
354
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
355 GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
356 GCallback cb, gpointer data, gboolean checked)
5906
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
357 {
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
358 GtkWidget *menuitem;
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
359 menuitem = gtk_check_menu_item_new_with_mnemonic(str);
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
360
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
361 if (menu)
5906
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
362 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
363
7299
4c804d9a52f1 [gaim-migrate @ 7883]
Christian Hammond <chipx86@chipx86.com>
parents: 7118
diff changeset
364 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), checked);
4c804d9a52f1 [gaim-migrate @ 7883]
Christian Hammond <chipx86@chipx86.com>
parents: 7118
diff changeset
365
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
366 if (cb)
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
367 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
5906
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
368
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
369 gtk_widget_show_all(menuitem);
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
370
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
371 return menuitem;
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
372 }
b9e4aaf4ae51 [gaim-migrate @ 6338]
Nathan Walp <nwalp@pidgin.im>
parents: 5880
diff changeset
373
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
374 GtkWidget *
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
375 pidgin_pixbuf_toolbar_button_from_stock(const char *icon)
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
376 {
9706
d5b657fe9cff [gaim-migrate @ 10567]
Mark Doliner <markdoliner@pidgin.im>
parents: 9534
diff changeset
377 GtkWidget *button, *image, *bbox;
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
378
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
379 button = gtk_toggle_button_new();
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
380 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
381
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
382 bbox = gtk_vbox_new(FALSE, 0);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
383
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
384 gtk_container_add (GTK_CONTAINER(button), bbox);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
385
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15578
diff changeset
386 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
387 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
388
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
389 gtk_widget_show_all(bbox);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
390
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
391 return button;
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
392 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
393
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
394 GtkWidget *
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
395 pidgin_pixbuf_button_from_stock(const char *text, const char *icon,
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
396 PidginButtonOrientation style)
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
397 {
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
398 GtkWidget *button, *image, *label, *bbox, *ibox, *lbox = NULL;
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
399
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
400 button = gtk_button_new();
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
401
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
402 if (style == PIDGIN_BUTTON_HORIZONTAL) {
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
403 bbox = gtk_hbox_new(FALSE, 0);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
404 ibox = gtk_hbox_new(FALSE, 0);
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
405 if (text)
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
406 lbox = gtk_hbox_new(FALSE, 0);
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
407 } else {
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
408 bbox = gtk_vbox_new(FALSE, 0);
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
409 ibox = gtk_vbox_new(FALSE, 0);
10504
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
410 if (text)
eae130eefbfe [gaim-migrate @ 11796]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10483
diff changeset
411 lbox = gtk_vbox_new(FALSE, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
412 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
413
9750
dfb5cf70295f [gaim-migrate @ 10617]
Mark Doliner <markdoliner@pidgin.im>
parents: 9749
diff changeset
414 gtk_container_add(GTK_CONTAINER(button), bbox);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
415
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
416 if (icon) {
29744
c1ae9f0f57ee *** Plucked rev df5196ac4c45dfff9cad5768c27d4e1d46fbb2ab (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29701
diff changeset
417 gtk_box_pack_start(GTK_BOX(bbox), ibox, TRUE, TRUE, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
418 image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_BUTTON);
9767
c68cfe03deec [gaim-migrate @ 10635]
Mark Doliner <markdoliner@pidgin.im>
parents: 9750
diff changeset
419 gtk_box_pack_end(GTK_BOX(ibox), image, FALSE, TRUE, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
420 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
421
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
422 if (text) {
29744
c1ae9f0f57ee *** Plucked rev df5196ac4c45dfff9cad5768c27d4e1d46fbb2ab (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29701
diff changeset
423 gtk_box_pack_start(GTK_BOX(bbox), lbox, TRUE, TRUE, 0);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
424 label = gtk_label_new(NULL);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
425 gtk_label_set_text_with_mnemonic(GTK_LABEL(label), text);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
426 gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
9767
c68cfe03deec [gaim-migrate @ 10635]
Mark Doliner <markdoliner@pidgin.im>
parents: 9750
diff changeset
427 gtk_box_pack_start(GTK_BOX(lbox), label, FALSE, TRUE, 0);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
428 pidgin_set_accessible_label (button, label);
6372
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
429 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
430
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
431 gtk_widget_show_all(bbox);
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
432
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
433 return button;
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
434 }
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
435
27c3152351ce [gaim-migrate @ 6877]
Christian Hammond <chipx86@chipx86.com>
parents: 6371
diff changeset
436
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
437 GtkWidget *pidgin_new_item_from_stock(GtkWidget *menu, const char *str, const char *icon, GCallback cb, gpointer data, guint accel_key, guint accel_mods, char *mod)
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
438 {
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
439 GtkWidget *menuitem;
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
440 /*
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
441 GtkWidget *hbox;
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
442 GtkWidget *label;
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
443 */
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
444 GtkWidget *image;
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
445
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
446 if (icon == NULL)
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
447 menuitem = gtk_menu_item_new_with_mnemonic(str);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
448 else
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
449 menuitem = gtk_image_menu_item_new_with_mnemonic(str);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
450
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
451 if (menu)
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
452 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
453
26821
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
454 if (cb)
ad2ea323d0f2 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
455 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
456
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
457 if (icon != NULL) {
15623
bf485c598199 toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@pidgin.im>
parents: 15578
diff changeset
458 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
5160
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
459 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
460 }
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
461 /* FIXME: this isn't right
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
462 if (mod) {
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
463 label = gtk_label_new(mod);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
464 gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
465 gtk_widget_show(label);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
466 }
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
467 */
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
468 /*
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
469 if (accel_key) {
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
470 gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key,
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
471 accel_mods, GTK_ACCEL_LOCKED);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
472 }
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
473 */
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
474
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
475 gtk_widget_show_all(menuitem);
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
476
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
477 return menuitem;
bcc3e2b2ed56 [gaim-migrate @ 5524]
Mark Doliner <markdoliner@pidgin.im>
parents: 4859
diff changeset
478 }
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
479
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
480 GtkWidget *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
481 pidgin_make_frame(GtkWidget *parent, const char *title)
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
482 {
34186
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
483 GtkWidget *vbox, *vbox2, *label, *hbox;
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
484 char *labeltitle;
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
485
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
486 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
487 gtk_box_pack_start(GTK_BOX(parent), vbox, FALSE, FALSE, 0);
5641
a9d1f7917dd4 [gaim-migrate @ 6054]
Christian Hammond <chipx86@chipx86.com>
parents: 5554
diff changeset
488 gtk_widget_show(vbox);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
489
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
490 label = gtk_label_new(NULL);
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
491
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
492 labeltitle = g_strdup_printf("<span weight=\"bold\">%s</span>", title);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
493 gtk_label_set_markup(GTK_LABEL(label), labeltitle);
13100
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
494 g_free(labeltitle);
56bf8002ddc6 [gaim-migrate @ 15461]
Richard Laager <rlaager@pidgin.im>
parents: 13092
diff changeset
495
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
496 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
497 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5641
a9d1f7917dd4 [gaim-migrate @ 6054]
Christian Hammond <chipx86@chipx86.com>
parents: 5554
diff changeset
498 gtk_widget_show(label);
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
499 pidgin_set_accessible_label (vbox, label);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
500
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15799
diff changeset
501 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
502 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
5641
a9d1f7917dd4 [gaim-migrate @ 6054]
Christian Hammond <chipx86@chipx86.com>
parents: 5554
diff changeset
503 gtk_widget_show(hbox);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
504
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
505 label = gtk_label_new(" ");
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
506 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
5641
a9d1f7917dd4 [gaim-migrate @ 6054]
Christian Hammond <chipx86@chipx86.com>
parents: 5554
diff changeset
507 gtk_widget_show(label);
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
508
34186
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
509 vbox2 = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
510 gtk_box_pack_start(GTK_BOX(hbox), vbox2, FALSE, FALSE, 0);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
511 gtk_widget_show(vbox2);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
512
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
513 g_object_set_data(G_OBJECT(vbox2), "main-vbox", vbox);
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
514
1d9ea89d4934 Group and string support for keyring settings
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
515 return vbox2;
5530
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
516 }
ba1ad464b56f [gaim-migrate @ 5930]
Christian Hammond <chipx86@chipx86.com>
parents: 5436
diff changeset
517
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
518 static gpointer
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
519 aop_option_menu_get_selected(GtkWidget *optmenu)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
520 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
521 gpointer data = NULL;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
522 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
523
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
524 g_return_val_if_fail(optmenu != NULL, NULL);
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
525
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
526 if (gtk_combo_box_get_active_iter(GTK_COMBO_BOX(optmenu), &iter))
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
527 gtk_tree_model_get(gtk_combo_box_get_model(GTK_COMBO_BOX(optmenu)),
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
528 &iter, AOP_DATA_COLUMN, &data, -1);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
529
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
530 return data;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
531 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
532
5647
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
533 static void
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
534 aop_menu_cb(GtkWidget *optmenu, GCallback cb)
5647
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
535 {
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
536 if (cb != NULL) {
32389
3dcbfaba75f7 Supply something for the widget.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32388
diff changeset
537 ((void (*)(GtkWidget *, gpointer, gpointer))cb)(optmenu,
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
538 aop_option_menu_get_selected(optmenu),
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
539 g_object_get_data(G_OBJECT(optmenu), "user_data"));
17237
77ee6a7263dc Add some braces and clean up indentation.
Richard Laager <rlaager@pidgin.im>
parents: 17236
diff changeset
540 }
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
541 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
542
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
543 static void
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
544 aop_option_menu_replace_menu(GtkWidget *optmenu, AopMenu *new_aop_menu)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
545 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
546 gtk_combo_box_set_model(GTK_COMBO_BOX(optmenu), new_aop_menu->model);
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
547 gtk_combo_box_set_active(GTK_COMBO_BOX(optmenu), new_aop_menu->default_item);
32935
190f458c958b It appears that no-one needs this AopMenu struct after the combo
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32934
diff changeset
548 g_free(new_aop_menu);
5647
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
549 }
7ffa3264c9be [gaim-migrate @ 6061]
Christian Hammond <chipx86@chipx86.com>
parents: 5646
diff changeset
550
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
551 static GdkPixbuf *
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
552 pidgin_create_prpl_icon_from_prpl(PurplePlugin *prpl, PidginPrplIconSize size, PurpleAccount *account)
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
553 {
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
554 PurplePluginProtocolInfo *prpl_info;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
555 const char *protoname = NULL;
18216
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
556 char *tmp;
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
557 char *filename = NULL;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
558 GdkPixbuf *pixbuf;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
559
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
560 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
561 if (prpl_info->list_icon == NULL)
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
562 return NULL;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
563
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
564 protoname = prpl_info->list_icon(account, NULL);
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
565 if (protoname == NULL)
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
566 return NULL;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
567
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
568 /*
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
569 * Status icons will be themeable too, and then it will look up
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
570 * protoname from the theme
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
571 */
18216
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
572 tmp = g_strconcat(protoname, ".png", NULL);
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
573
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
574 filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols",
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
575 size == PIDGIN_PRPL_ICON_SMALL ? "16" :
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
576 size == PIDGIN_PRPL_ICON_MEDIUM ? "22" : "48",
18216
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
577 tmp, NULL);
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
578 g_free(tmp);
f34603f4631e Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@pidgin.im>
parents: 18193
diff changeset
579
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
580 pixbuf = pidgin_pixbuf_new_from_file(filename);
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
581 g_free(filename);
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
582
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
583 return pixbuf;
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
584 }
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
585
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
586 static GtkWidget *
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
587 aop_option_menu_new(AopMenu *aop_menu, GCallback cb, gpointer user_data)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
588 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
589 GtkWidget *optmenu = NULL;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
590 GtkCellRenderer *cr = NULL;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
591
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
592 optmenu = gtk_combo_box_new();
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
593 gtk_widget_show(optmenu);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
594 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(optmenu), cr = gtk_cell_renderer_pixbuf_new(), FALSE);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
595 gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(optmenu), cr, "pixbuf", AOP_ICON_COLUMN);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
596 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(optmenu), cr = gtk_cell_renderer_text_new(), TRUE);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
597 gtk_cell_layout_add_attribute(GTK_CELL_LAYOUT(optmenu), cr, "text", AOP_NAME_COLUMN);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
598
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
599 aop_option_menu_replace_menu(optmenu, aop_menu);
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
600 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
601
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
602 g_signal_connect(G_OBJECT(optmenu), "changed", G_CALLBACK(aop_menu_cb), cb);
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
603
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
604 return optmenu;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
605 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
606
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
607 static void
17118
4fbaa628dd8e Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17117
diff changeset
608 aop_option_menu_select_by_data(GtkWidget *optmenu, gpointer data)
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
609 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
610 GtkTreeModel *model;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
611 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
612 gpointer iter_data;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
613 model = gtk_combo_box_get_model(GTK_COMBO_BOX(optmenu));
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
614 if (gtk_tree_model_get_iter_first(model, &iter)) {
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
615 do {
32936
03b440305f19 Looks like I missed a number.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32935
diff changeset
616 gtk_tree_model_get(model, &iter, AOP_DATA_COLUMN, &iter_data, -1);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
617 if (iter_data == data) {
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
618 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(optmenu), &iter);
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
619 return;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
620 }
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
621 } while (gtk_tree_model_iter_next(model, &iter));
17235
f04fc9bbb90b Style changes in if statements.
Richard Laager <rlaager@pidgin.im>
parents: 17234
diff changeset
622 }
17014
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
623 }
1e90cfae53dd disapproval of revision '41be962a27d1633445fef2055c4a0db183f104dc'
Richard Laager <rlaager@pidgin.im>
parents: 17013
diff changeset
624
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
625 static AopMenu *
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
626 create_protocols_menu(const char *default_proto_id)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
627 {
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
628 AopMenu *aop_menu = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
629 PurplePlugin *plugin;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
630 GdkPixbuf *pixbuf = NULL;
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
631 GtkTreeIter iter;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
632 GtkListStore *ls;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
633 GList *p;
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
634 int i;
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
635
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
636 ls = gtk_list_store_new(AOP_COLUMN_COUNT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
637
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
638 aop_menu = g_malloc0(sizeof(AopMenu));
32934
9b08ef7651b2 Avoid calling gtk_combo_box_set_active twice in some cases.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32933
diff changeset
639 aop_menu->default_item = 0;
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
640 aop_menu->model = GTK_TREE_MODEL(ls);
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
641
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
642 for (p = purple_plugins_get_protocols(), i = 0;
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
643 p != NULL;
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
644 p = p->next, i++) {
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
645
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
646 plugin = (PurplePlugin *)p->data;
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
647
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
648 pixbuf = pidgin_create_prpl_icon_from_prpl(plugin, PIDGIN_PRPL_ICON_SMALL, NULL);
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
649
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
650 gtk_list_store_append(ls, &iter);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
651 gtk_list_store_set(ls, &iter,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
652 AOP_ICON_COLUMN, pixbuf,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
653 AOP_NAME_COLUMN, plugin->info->name,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
654 AOP_DATA_COLUMN, plugin->info->id,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
655 -1);
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
656
17235
f04fc9bbb90b Style changes in if statements.
Richard Laager <rlaager@pidgin.im>
parents: 17234
diff changeset
657 if (pixbuf)
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
658 g_object_unref(pixbuf);
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
659
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
660 if (default_proto_id != NULL && !strcmp(plugin->info->id, default_proto_id))
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
661 aop_menu->default_item = i;
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
662 }
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
663
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
664 return aop_menu;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
665 }
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
666
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
667 GtkWidget *
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
668 pidgin_protocol_option_menu_new(const char *id, GCallback cb,
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
669 gpointer user_data)
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
670 {
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
671 return aop_option_menu_new(create_protocols_menu(id), cb, user_data);
5644
bc4c2f9f2bf8 [gaim-migrate @ 6058]
Christian Hammond <chipx86@chipx86.com>
parents: 5641
diff changeset
672 }
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
673
18672
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
674 const char *
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
675 pidgin_protocol_option_menu_get_selected(GtkWidget *optmenu)
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
676 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
677 return (const char *)aop_option_menu_get_selected(optmenu);
18672
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
678 }
da4db1be5d98 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@pidgin.im>
parents: 18417
diff changeset
679
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
680 PurpleAccount *
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
681 pidgin_account_option_menu_get_selected(GtkWidget *optmenu)
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8913
diff changeset
682 {
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
683 return (PurpleAccount *)aop_option_menu_get_selected(optmenu);
8940
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8913
diff changeset
684 }
3e22cf150db0 [gaim-migrate @ 9710]
Mark Doliner <markdoliner@pidgin.im>
parents: 8913
diff changeset
685
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
686 static AopMenu *
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
687 create_account_menu(PurpleAccount *default_account,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
688 PurpleFilterAccountFunc filter_func, gboolean show_all)
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
689 {
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
690 AopMenu *aop_menu = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
691 PurpleAccount *account;
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
692 GdkPixbuf *pixbuf = NULL;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
693 GList *list;
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
694 GList *p;
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
695 GtkListStore *ls;
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
696 GtkTreeIter iter;
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
697 int i;
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
698 char buf[256];
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
699
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
700 if (show_all)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
701 list = purple_accounts_get_all();
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
702 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
703 list = purple_connections_get_all();
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
704
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
705 ls = gtk_list_store_new(AOP_COLUMN_COUNT, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_POINTER);
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
706
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
707 aop_menu = g_malloc0(sizeof(AopMenu));
32934
9b08ef7651b2 Avoid calling gtk_combo_box_set_active twice in some cases.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32933
diff changeset
708 aop_menu->default_item = 0;
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
709 aop_menu->model = GTK_TREE_MODEL(ls);
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
710
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
711 for (p = list, i = 0; p != NULL; p = p->next, i++) {
5879
a2757f3f2dda [gaim-migrate @ 6311]
Christian Hammond <chipx86@chipx86.com>
parents: 5877
diff changeset
712 if (show_all)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
713 account = (PurpleAccount *)p->data;
5879
a2757f3f2dda [gaim-migrate @ 6311]
Christian Hammond <chipx86@chipx86.com>
parents: 5877
diff changeset
714 else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
715 PurpleConnection *gc = (PurpleConnection *)p->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
716
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
717 account = purple_connection_get_account(gc);
5879
a2757f3f2dda [gaim-migrate @ 6311]
Christian Hammond <chipx86@chipx86.com>
parents: 5877
diff changeset
718 }
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
719
8289
234429bac6b5 [gaim-migrate @ 9013]
Christian Hammond <chipx86@chipx86.com>
parents: 8247
diff changeset
720 if (filter_func && !filter_func(account)) {
8215
7a9a156d93d9 [gaim-migrate @ 8938]
Tim Ringenbach <marv@pidgin.im>
parents: 8155
diff changeset
721 i--;
6646
b9a0b5eb74e6 [gaim-migrate @ 7171]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
722 continue;
8215
7a9a156d93d9 [gaim-migrate @ 8938]
Tim Ringenbach <marv@pidgin.im>
parents: 8155
diff changeset
723 }
6646
b9a0b5eb74e6 [gaim-migrate @ 7171]
Christian Hammond <chipx86@chipx86.com>
parents: 6485
diff changeset
724
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
725 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
726
17386
f68ba6199d79 merge of 'de0c8e6287f1090343edb9c43e0d8d681e58df07'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17368 17385
diff changeset
727 if (pixbuf) {
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
728 if (purple_account_is_disconnected(account) && show_all &&
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
729 purple_connections_get_all())
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
730 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
731 }
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
732
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
733 if (purple_account_get_alias(account)) {
11017
500eea0d6800 [gaim-migrate @ 12886]
Etan Reisner <deryni@pidgin.im>
parents: 10951
diff changeset
734 g_snprintf(buf, sizeof(buf), "%s (%s) (%s)",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
735 purple_account_get_username(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
736 purple_account_get_alias(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
737 purple_account_get_protocol_name(account));
11017
500eea0d6800 [gaim-migrate @ 12886]
Etan Reisner <deryni@pidgin.im>
parents: 10951
diff changeset
738 } else {
500eea0d6800 [gaim-migrate @ 12886]
Etan Reisner <deryni@pidgin.im>
parents: 10951
diff changeset
739 g_snprintf(buf, sizeof(buf), "%s (%s)",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
740 purple_account_get_username(account),
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
741 purple_account_get_protocol_name(account));
11017
500eea0d6800 [gaim-migrate @ 12886]
Etan Reisner <deryni@pidgin.im>
parents: 10951
diff changeset
742 }
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
743
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
744 gtk_list_store_append(ls, &iter);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
745 gtk_list_store_set(ls, &iter,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
746 AOP_ICON_COLUMN, pixbuf,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
747 AOP_NAME_COLUMN, buf,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
748 AOP_DATA_COLUMN, account,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
749 -1);
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
750
17235
f04fc9bbb90b Style changes in if statements.
Richard Laager <rlaager@pidgin.im>
parents: 17234
diff changeset
751 if (pixbuf)
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
752 g_object_unref(pixbuf);
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
753
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
754 if (default_account && account == default_account)
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
755 aop_menu->default_item = i;
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
756 }
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
757
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
758 return aop_menu;
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
759 }
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
760
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
761 static void
8134
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
762 regenerate_account_menu(GtkWidget *optmenu)
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
763 {
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
764 gboolean show_all;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
765 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
766 PurpleFilterAccountFunc filter_func;
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
767
32388
9fc7219b95cc Apply final changes from nix_nix's patch.
Gabriel Schulhof <nix@go-nix.ca>
parents: 32386
diff changeset
768 account = (PurpleAccount *)aop_option_menu_get_selected(optmenu);
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
769 show_all = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(optmenu), "show_all"));
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
770 filter_func = g_object_get_data(G_OBJECT(optmenu), "filter_func");
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
771
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
772 aop_option_menu_replace_menu(optmenu, create_account_menu(account, filter_func, show_all));
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
773 }
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
774
8134
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
775 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
776 account_menu_sign_on_off_cb(PurpleConnection *gc, GtkWidget *optmenu)
8134
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
777 {
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
778 regenerate_account_menu(optmenu);
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
779 }
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
780
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
781 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
782 account_menu_added_removed_cb(PurpleAccount *account, GtkWidget *optmenu)
8134
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
783 {
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
784 regenerate_account_menu(optmenu);
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
785 }
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
786
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
787 static gboolean
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
788 account_menu_destroyed_cb(GtkWidget *optmenu, GdkEvent *event,
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
789 void *user_data)
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
790 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
791 purple_signals_disconnect_by_handle(optmenu);
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
792
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
793 return FALSE;
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
794 }
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
795
9910
7b4465b92411 [gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9899
diff changeset
796 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
797 pidgin_account_option_menu_set_selected(GtkWidget *optmenu, PurpleAccount *account)
9910
7b4465b92411 [gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9899
diff changeset
798 {
17385
bf46968ab031 Casting things to gpointer isn't useful, unless they were previously const.
Richard Laager <rlaager@pidgin.im>
parents: 17377
diff changeset
799 aop_option_menu_select_by_data(optmenu, account);
9910
7b4465b92411 [gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9899
diff changeset
800 }
7b4465b92411 [gaim-migrate @ 10802]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9899
diff changeset
801
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
802 GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
803 pidgin_account_option_menu_new(PurpleAccount *default_account,
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
804 gboolean show_all, GCallback cb,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
805 PurpleFilterAccountFunc filter_func,
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
806 gpointer user_data)
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
807 {
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
808 GtkWidget *optmenu;
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
809
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
810 /* Create the option menu */
17234
6e430db9b926 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@pidgin.im>
parents: 17233
diff changeset
811 optmenu = aop_option_menu_new(create_account_menu(default_account, filter_func, show_all), cb, user_data);
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
812
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
813 g_signal_connect(G_OBJECT(optmenu), "destroy",
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
814 G_CALLBACK(account_menu_destroyed_cb), NULL);
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
815
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
816 /* Register the purple sign on/off event callbacks. */
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
817 purple_signal_connect(purple_connections_get_handle(), "signed-on",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
818 optmenu, PURPLE_CALLBACK(account_menu_sign_on_off_cb),
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
819 optmenu);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
820 purple_signal_connect(purple_connections_get_handle(), "signed-off",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
821 optmenu, PURPLE_CALLBACK(account_menu_sign_on_off_cb),
6485
3c7ba18e32f1 [gaim-migrate @ 6999]
Christian Hammond <chipx86@chipx86.com>
parents: 6465
diff changeset
822 optmenu);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
823 purple_signal_connect(purple_accounts_get_handle(), "account-added",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
824 optmenu, PURPLE_CALLBACK(account_menu_added_removed_cb),
8134
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
825 optmenu);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
826 purple_signal_connect(purple_accounts_get_handle(), "account-removed",
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
827 optmenu, PURPLE_CALLBACK(account_menu_added_removed_cb),
8134
e0b690435403 [gaim-migrate @ 8839]
Nathan Walp <nwalp@pidgin.im>
parents: 8061
diff changeset
828 optmenu);
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
829
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
830 /* Set some data. */
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
831 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
832 g_object_set_data(G_OBJECT(optmenu), "show_all", GINT_TO_POINTER(show_all));
17375
0d9082502e58 Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17238
diff changeset
833 g_object_set_data(G_OBJECT(optmenu), "filter_func", filter_func);
6391
bd5914d9837c [gaim-migrate @ 6896]
Christian Hammond <chipx86@chipx86.com>
parents: 6372
diff changeset
834
5877
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
835 return optmenu;
37695b88b248 [gaim-migrate @ 6309]
Christian Hammond <chipx86@chipx86.com>
parents: 5872
diff changeset
836 }
5943
8a052155157a [gaim-migrate @ 6384]
Christian Hammond <chipx86@chipx86.com>
parents: 5906
diff changeset
837
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12063
diff changeset
838 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
839 pidgin_setup_gtkspell(GtkTextView *textview)
12061
ef756336217f [gaim-migrate @ 14356]
Mike Hearn <mike@theoretic.com>
parents: 11878
diff changeset
840 {
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12063
diff changeset
841 #ifdef USE_GTKSPELL
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
842 GError *error = NULL;
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
843 char *locale = NULL;
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
844
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
845 g_return_if_fail(textview != NULL);
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
846 g_return_if_fail(GTK_IS_TEXT_VIEW(textview));
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
847
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12063
diff changeset
848 if (gtkspell_new_attach(textview, locale, &error) == NULL && error)
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
849 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
850 purple_debug_warning("gtkspell", "Failed to setup GtkSpell: %s\n",
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12063
diff changeset
851 error->message);
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
852 g_error_free(error);
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
853 }
12067
11fb53722956 [gaim-migrate @ 14362]
Richard Laager <rlaager@pidgin.im>
parents: 12063
diff changeset
854 #endif /* USE_GTKSPELL */
7538
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
855 }
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
856
b20dbe9222e2 [gaim-migrate @ 8151]
Christian Hammond <chipx86@chipx86.com>
parents: 7420
diff changeset
857 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
858 pidgin_save_accels_cb(GtkAccelGroup *accel_group, guint arg1,
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
859 GdkModifierType arg2, GClosure *arg3,
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
860 gpointer data)
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
861 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
862 purple_debug(PURPLE_DEBUG_MISC, "accels",
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
863 "accel changed, scheduling save.\n");
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
864
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
865 if (!accels_save_timer)
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 26599
diff changeset
866 accels_save_timer = purple_timeout_add_seconds(5, pidgin_save_accels,
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
867 NULL);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
868 }
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
869
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
870 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
871 pidgin_save_accels(gpointer data)
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
872 {
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
873 char *filename = NULL;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
874
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
875 filename = g_build_filename(purple_user_dir(), G_DIR_SEPARATOR_S,
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
876 "accels", NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
877 purple_debug(PURPLE_DEBUG_MISC, "accels", "saving accels to %s\n", filename);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
878 gtk_accel_map_save(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
879 g_free(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
880
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
881 accels_save_timer = 0;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
882 return FALSE;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
883 }
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
884
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
885 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
886 pidgin_load_accels()
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
887 {
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
888 char *filename = NULL;
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
889
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
890 filename = g_build_filename(purple_user_dir(), G_DIR_SEPARATOR_S,
14781
3733727a022a [gaim-migrate @ 17473]
Etan Reisner <deryni@pidgin.im>
parents: 14720
diff changeset
891 "accels", NULL);
7420
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
892 gtk_accel_map_load(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
893 g_free(filename);
af45f3aa95c9 [gaim-migrate @ 8022]
Etan Reisner <deryni@pidgin.im>
parents: 7299
diff changeset
894 }
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
895
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
896 static void
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
897 show_retrieveing_info(PurpleConnection *conn, const char *name)
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
898 {
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
899 PurpleNotifyUserInfo *info = purple_notify_user_info_new();
32188
cb9cad610bc6 I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <markdoliner@pidgin.im>
parents: 32149
diff changeset
900 purple_notify_user_info_add_pair_plaintext(info, _("Information"), _("Retrieving..."));
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
901 purple_notify_userinfo(conn, name, info, NULL, NULL);
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
902 purple_notify_user_info_destroy(info);
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
903 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
904
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
905 void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name)
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
906 {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
907 show_retrieveing_info(conn, name);
17387
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
908 serv_get_info(conn, name);
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
909 }
db83104d06f2 Fix the last merge.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17386
diff changeset
910
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
911 void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chat)
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
912 {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
913 char *who = NULL;
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
914 PurplePluginProtocolInfo *prpl_info = NULL;
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
915
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
916 if (chat < 0) {
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
917 pidgin_retrieve_user_info(conn, name);
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
918 return;
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
919 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
920
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32620
diff changeset
921 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(conn));
23501
55185be28a1b Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <datallah@pidgin.im>
parents: 23333
diff changeset
922 if (prpl_info != NULL && prpl_info->get_cb_real_name)
55185be28a1b Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <datallah@pidgin.im>
parents: 23333
diff changeset
923 who = prpl_info->get_cb_real_name(conn, chat, name);
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
924 if (prpl_info == NULL || prpl_info->get_cb_info == NULL) {
23501
55185be28a1b Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <datallah@pidgin.im>
parents: 23333
diff changeset
925 pidgin_retrieve_user_info(conn, who ? who : name);
55185be28a1b Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <datallah@pidgin.im>
parents: 23333
diff changeset
926 g_free(who);
18281
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
927 return;
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
928 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
929
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
930 show_retrieveing_info(conn, who ? who : name);
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
931 prpl_info->get_cb_info(conn, chat, name);
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
932 g_free(who);
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
933 }
f7dd07e1e434 Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18278
diff changeset
934
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
935 gboolean
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
936 pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
937 PurpleAccount **ret_account, char **ret_protocol,
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
938 char **ret_username, char **ret_alias)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
939 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
940 char *protocol = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
941 char *username = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
942 char *alias = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
943 char *str;
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30054
diff changeset
944 char *s;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
945 gboolean valid;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
946
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
947 g_return_val_if_fail(msg != NULL, FALSE);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
948 g_return_val_if_fail(ret_protocol != NULL, FALSE);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
949 g_return_val_if_fail(ret_username != NULL, FALSE);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
950
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
951 s = str = g_strdup(msg);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
952
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
953 while (*s != '\r' && *s != '\n' && *s != '\0')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
954 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
955 char *key, *value;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
956
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
957 key = s;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
958
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
959 /* Grab the key */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
960 while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ' ')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
961 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
962
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
963 if (*s == '\r') s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
964
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
965 if (*s == '\n')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
966 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
967 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
968 continue;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
969 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
970
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
971 if (*s != '\0') *s++ = '\0';
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
972
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
973 /* Clear past any whitespace */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
974 while (*s != '\0' && *s == ' ')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
975 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
976
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
977 /* Now let's grab until the end of the line. */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
978 value = s;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
979
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
980 while (*s != '\r' && *s != '\n' && *s != '\0')
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
981 s++;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
982
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
983 if (*s == '\r') *s++ = '\0';
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
984 if (*s == '\n') *s++ = '\0';
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
985
30626
bec413ce77c7 Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30054
diff changeset
986 if (strchr(key, ':') != NULL)
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
987 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
988 if (!g_ascii_strcasecmp(key, "X-IM-Username:"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
989 username = g_strdup(value);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
990 else if (!g_ascii_strcasecmp(key, "X-IM-Protocol:"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
991 protocol = g_strdup(value);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
992 else if (!g_ascii_strcasecmp(key, "X-IM-Alias:"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
993 alias = g_strdup(value);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
994 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
995 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
996
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
997 if (username != NULL && protocol != NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
998 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
999 valid = TRUE;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1000
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1001 *ret_username = username;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1002 *ret_protocol = protocol;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1003
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1004 if (ret_alias != NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1005 *ret_alias = alias;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1006
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1007 /* Check for a compatible account. */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1008 if (ret_account != NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1009 {
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
1010 GList *list;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1011 PurpleAccount *account = NULL;
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
1012 GList *l;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1013 const char *protoname;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1014
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1015 if (all_accounts)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1016 list = purple_accounts_get_all();
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1017 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1018 list = purple_connections_get_all();
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1019
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1020 for (l = list; l != NULL; l = l->next)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1021 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1022 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1023 PurplePluginProtocolInfo *prpl_info = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1024 PurplePlugin *plugin;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1025
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1026 if (all_accounts)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1027 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1028 account = (PurpleAccount *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1029
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1030 plugin = purple_plugins_find_with_id(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1031 purple_account_get_protocol_id(account));
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1032
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1033 if (plugin == NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1034 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1035 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1036
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1037 continue;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1038 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1039
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1040 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1041 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1042 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1043 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1044 gc = (PurpleConnection *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1045 account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1046
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32620
diff changeset
1047 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1048 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1049
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1050 protoname = prpl_info->list_icon(account, NULL);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1051
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1052 if (!strcmp(protoname, protocol))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1053 break;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1054
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1055 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1056 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1057
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1058 /* Special case for AIM and ICQ */
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1059 if (account == NULL && (!strcmp(protocol, "aim") ||
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1060 !strcmp(protocol, "icq")))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1061 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1062 for (l = list; l != NULL; l = l->next)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1063 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1064 PurpleConnection *gc;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1065 PurplePluginProtocolInfo *prpl_info = NULL;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1066 PurplePlugin *plugin;
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1067
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1068 if (all_accounts)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1069 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1070 account = (PurpleAccount *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1071
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1072 plugin = purple_plugins_find_with_id(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1073 purple_account_get_protocol_id(account));
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1074
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1075 if (plugin == NULL)
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1076 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1077 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1078
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1079 continue;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1080 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1081
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1082 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1083 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1084 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1085 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1086 gc = (PurpleConnection *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1087 account = purple_connection_get_account(gc);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1088
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32620
diff changeset
1089 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1090 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1091
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1092 protoname = prpl_info->list_icon(account, NULL);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1093
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1094 if (!strcmp(protoname, "aim") || !strcmp(protoname, "icq"))
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1095 break;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1096
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1097 account = NULL;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1098 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1099 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1100
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1101 *ret_account = account;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1102 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1103 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1104 else
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1105 {
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1106 valid = FALSE;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1107
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13783
diff changeset
1108 g_free(username);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13783
diff changeset
1109 g_free(protocol);
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13783
diff changeset
1110 g_free(alias);
7712
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1111 }
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1112
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1113 g_free(str);
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1114
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1115 return valid;
74af9358b808 [gaim-migrate @ 8357]
Christian Hammond <chipx86@chipx86.com>
parents: 7538
diff changeset
1116 }
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1117
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1118 void
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
1119 pidgin_set_accessible_label (GtkWidget *w, GtkWidget *l)
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1120 {
19547
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1121 AtkObject *acc;
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1122 const gchar *label_text;
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1123 const gchar *existing_name;
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1124
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1125 acc = gtk_widget_get_accessible (w);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1126
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1127 /* If this object has no name, set it's name with the label text */
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1128 existing_name = atk_object_get_name (acc);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1129 if (!existing_name) {
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1130 label_text = gtk_label_get_text (GTK_LABEL(l));
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1131 if (label_text)
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1132 atk_object_set_name (acc, label_text);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1133 }
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1134
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1135 pidgin_set_accessible_relations(w, l);
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1136 }
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1137
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1138 void
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1139 pidgin_set_accessible_relations (GtkWidget *w, GtkWidget *l)
0c3fcdc6a025 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 19123
diff changeset
1140 {
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1141 AtkObject *acc, *label;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1142 AtkObject *rel_obj[1];
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1143 AtkRelationSet *set;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1144 AtkRelation *relation;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1145
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1146 acc = gtk_widget_get_accessible (w);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1147 label = gtk_widget_get_accessible (l);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1148
18351
b881759cda28 Call gtk_label_set_mnemonic_widget() in pidgin_make_accessible_label. Closes #589
Sean Egan <seanegan@pidgin.im>
parents: 18281
diff changeset
1149 /* Make sure mnemonics work */
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
1150 gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
1151
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1152 /* Create the labeled-by relation */
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1153 set = atk_object_ref_relation_set (acc);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1154 rel_obj[0] = label;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1155 relation = atk_relation_new (rel_obj, 1, ATK_RELATION_LABELLED_BY);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1156 atk_relation_set_add (set, relation);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1157 g_object_unref (relation);
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
1158 g_object_unref(set);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1159
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1160 /* Create the label-for relation */
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1161 set = atk_object_ref_relation_set (label);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1162 rel_obj[0] = acc;
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1163 relation = atk_relation_new (rel_obj, 1, ATK_RELATION_LABEL_FOR);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1164 atk_relation_set_add (set, relation);
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1165 g_object_unref (relation);
20241
36b8b9235ff3 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20234
diff changeset
1166 g_object_unref(set);
8137
ca2132ad085e [gaim-migrate @ 8842]
Marc Mulcahy
parents: 8134
diff changeset
1167 }
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1168
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18216
diff changeset
1169 void
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18216
diff changeset
1170 pidgin_menu_position_func_helper(GtkMenu *menu,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1171 gint *x,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1172 gint *y,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1173 gboolean *push_in,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1174 gpointer data)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1175 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1176 GtkWidget *widget;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1177 GtkRequisition requisition;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1178 GdkScreen *screen;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1179 GdkRectangle monitor;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1180 gint monitor_num;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1181 gint space_left, space_right, space_above, space_below;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1182 gint needed_width;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1183 gint needed_height;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1184 gint xthickness;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1185 gint ythickness;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1186 gboolean rtl;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1187
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1188 g_return_if_fail(GTK_IS_MENU(menu));
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1189
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1190 widget = GTK_WIDGET(menu);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1191 screen = gtk_widget_get_screen(widget);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1192 xthickness = gtk_widget_get_style(widget)->xthickness;
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1193 ythickness = gtk_widget_get_style(widget)->ythickness;
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1194 rtl = (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1195
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1196 /*
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1197 * We need the requisition to figure out the right place to
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1198 * popup the menu. In fact, we always need to ask here, since
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1199 * if a size_request was queued while we weren't popped up,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1200 * the requisition won't have been recomputed yet.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1201 */
33277
d6229108ce71 Remove deprecated gtk_widget_size_request calls.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33269
diff changeset
1202 gtk_widget_get_preferred_size(widget, NULL, &requisition);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1203
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1204 monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1205
32212
53d06e21e630 It seems like there's a dereference missing here.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32188
diff changeset
1206 *push_in = FALSE;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1207
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1208 /*
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1209 * The placement of popup menus horizontally works like this (with
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1210 * RTL in parentheses)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1211 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1212 * - If there is enough room to the right (left) of the mouse cursor,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1213 * position the menu there.
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1214 *
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1215 * - Otherwise, if if there is enough room to the left (right) of the
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1216 * mouse cursor, position the menu there.
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1217 *
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1218 * - Otherwise if the menu is smaller than the monitor, position it
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1219 * on the side of the mouse cursor that has the most space available
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1220 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1221 * - Otherwise (if there is simply not enough room for the menu on the
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1222 * monitor), position it as far left (right) as possible.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1223 *
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1224 * Positioning in the vertical direction is similar: first try below
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1225 * mouse cursor, then above.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1226 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1227 gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1228
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1229 space_left = *x - monitor.x;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1230 space_right = monitor.x + monitor.width - *x - 1;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1231 space_above = *y - monitor.y;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1232 space_below = monitor.y + monitor.height - *y - 1;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1233
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1234 /* position horizontally */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1235
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1236 /* the amount of space we need to position the menu. Note the
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1237 * menu is offset "xthickness" pixels
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1238 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1239 needed_width = requisition.width - xthickness;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1240
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1241 if (needed_width <= space_left ||
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1242 needed_width <= space_right)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1243 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1244 if ((rtl && needed_width <= space_left) ||
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1245 (!rtl && needed_width > space_right))
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1246 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1247 /* position left */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1248 *x = *x + xthickness - requisition.width + 1;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1249 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1250 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1251 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1252 /* position right */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1253 *x = *x - xthickness;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1254 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1255
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1256 /* x is clamped on-screen further down */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1257 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1258 else if (requisition.width <= monitor.width)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1259 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1260 /* the menu is too big to fit on either side of the mouse
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1261 * cursor, but smaller than the monitor. Position it on
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1262 * the side that has the most space
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1263 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1264 if (space_left > space_right)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1265 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1266 /* left justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1267 *x = monitor.x;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1268 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1269 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1270 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1271 /* right justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1272 *x = monitor.x + monitor.width - requisition.width;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1273 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1274 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1275 else /* menu is simply too big for the monitor */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1276 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1277 if (rtl)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1278 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1279 /* right justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1280 *x = monitor.x + monitor.width - requisition.width;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1281 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1282 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1283 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1284 /* left justify */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1285 *x = monitor.x;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1286 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1287 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1288
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1289 /* Position vertically. The algorithm is the same as above, but
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1290 * simpler because we don't have to take RTL into account.
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1291 */
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1292 needed_height = requisition.height - ythickness;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1293
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1294 if (needed_height <= space_above ||
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1295 needed_height <= space_below)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1296 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1297 if (needed_height <= space_below)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1298 *y = *y - ythickness;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1299 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1300 *y = *y + ythickness - requisition.height + 1;
11525
1d06283bdcc9 [gaim-migrate @ 13773]
Francesco Fracassi <ffracassi@users.sourceforge.net>
parents: 11338
diff changeset
1301
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1302 *y = CLAMP (*y, monitor.y,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1303 monitor.y + monitor.height - requisition.height);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1304 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1305 else if (needed_height > space_below && needed_height > space_above)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1306 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1307 if (space_below >= space_above)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1308 *y = monitor.y + monitor.height - requisition.height;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1309 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1310 *y = monitor.y;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1311 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1312 else
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1313 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1314 *y = monitor.y;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1315 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1316 }
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1317
8247
adc66f6bcaf4 [gaim-migrate @ 8970]
Nathan Walp <nwalp@pidgin.im>
parents: 8218
diff changeset
1318
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1319 void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1320 pidgin_treeview_popup_menu_position_func(GtkMenu *menu,
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1321 gint *x,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1322 gint *y,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1323 gboolean *push_in,
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1324 gpointer data)
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1325 {
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1326 GtkWidget *widget = GTK_WIDGET(data);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1327 GtkTreeView *tv = GTK_TREE_VIEW(data);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1328 GtkTreePath *path;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1329 GtkTreeViewColumn *col;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1330 GdkRectangle rect;
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1331 gint ythickness = gtk_widget_get_style(GTK_WIDGET(menu))->ythickness;
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1332
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1333 gdk_window_get_origin (gtk_widget_get_window(widget), x, y);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1334 gtk_tree_view_get_cursor (tv, &path, &col);
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1335 gtk_tree_view_get_cell_area (tv, path, col, &rect);
8218
0ff223f56a67 [gaim-migrate @ 8941]
Christian Hammond <chipx86@chipx86.com>
parents: 8215
diff changeset
1336
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1337 *x += rect.x+rect.width;
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1338 *y += rect.y+rect.height+ythickness;
18238
b38c33d2d71e Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18216
diff changeset
1339 pidgin_menu_position_func_helper(menu, x, y, push_in, data);
8143
ce4b6383777b [gaim-migrate @ 8851]
Nathan Fredrickson <nathan@silverorange.com>
parents: 8137
diff changeset
1340 }
10061
2833056ea11c [gaim-migrate @ 11033]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 9910
diff changeset
1341
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1342 enum {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1343 DND_FILE_TRANSFER,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1344 DND_IM_IMAGE,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1345 DND_BUDDY_ICON
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1346 };
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1347
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1348 typedef struct {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1349 char *filename;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1350 PurpleAccount *account;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1351 char *who;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1352 } _DndData;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1353
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10681
diff changeset
1354 static void dnd_image_ok_callback(_DndData *data, int choice)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1355 {
31372
743be8e50f23 When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <markdoliner@pidgin.im>
parents: 31217
diff changeset
1356 const gchar *shortname;
23287
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1357 gchar *filedata;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1358 size_t size;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
1359 GStatBuf st;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1360 GError *err = NULL;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1361 PurpleConversation *conv;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1362 PidginConversation *gtkconv;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1363 int id;
23287
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1364 PurpleBuddy *buddy;
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1365 PurpleContact *contact;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1366 switch (choice) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1367 case DND_BUDDY_ICON:
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14781
diff changeset
1368 if (g_stat(data->filename, &st)) {
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1369 char *str;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1370
14914
290eb2170f38 [gaim-migrate @ 17621]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14781
diff changeset
1371 str = g_strdup_printf(_("The following error has occurred loading %s: %s"),
21975
721ddc236ce5 Use g_sterror instead of strerror in two more places.
Mark Doliner <markdoliner@pidgin.im>
parents: 21890
diff changeset
1372 data->filename, g_strerror(errno));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1373 purple_notify_error(NULL, NULL,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1374 _("Failed to load image"),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1375 str);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1376 g_free(str);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1377
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1378 break;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1379 }
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1380
23288
c234af912479 Compile and de-warn.
Etan Reisner <deryni@pidgin.im>
parents: 23287
diff changeset
1381 buddy = purple_find_buddy(data->account, data->who);
23287
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1382 if (!buddy) {
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1383 purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1384 break;
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1385 }
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1386 contact = purple_buddy_get_contact(buddy);
4b4f5e80e324 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <deryni@pidgin.im>
parents: 23286
diff changeset
1387 purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, data->filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1388 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1389 case DND_FILE_TRANSFER:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1390 serv_send_file(purple_account_get_connection(data->account), data->who, data->filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1391 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1392 case DND_IM_IMAGE:
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1393 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, data->account, data->who);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1394 gtkconv = PIDGIN_CONVERSATION(conv);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1395
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1396 if (!g_file_get_contents(data->filename, &filedata, &size,
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1397 &err)) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1398 char *str;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1399
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1400 str = g_strdup_printf(_("The following error has occurred loading %s: %s"), data->filename, err->message);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1401 purple_notify_error(NULL, NULL,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1402 _("Failed to load image"),
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1403 str);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1404
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1405 g_error_free(err);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1406 g_free(str);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1407
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1408 break;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1409 }
31372
743be8e50f23 When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <markdoliner@pidgin.im>
parents: 31217
diff changeset
1410 shortname = strrchr(data->filename, G_DIR_SEPARATOR);
743be8e50f23 When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <markdoliner@pidgin.im>
parents: 31217
diff changeset
1411 shortname = shortname ? shortname + 1 : data->filename;
33661
2ebcb105e606 Rename two functions.
Mark Doliner <mark@kingant.net>
parents: 33602
diff changeset
1412 id = purple_imgstore_new_with_id(filedata, size, shortname);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1413
33269
1ea2edfac5e9 Convert some more util stuff to a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33232
diff changeset
1414 gtk_webview_insert_image(GTK_WEBVIEW(gtkconv->entry), id);
16437
7ff7c3405ea2 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@pidgin.im>
parents: 16314
diff changeset
1415 purple_imgstore_unref_by_id(id);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1416
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1417 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1418 }
25152
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1419 g_free(data->filename);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1420 g_free(data->who);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1421 g_free(data);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1422 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1423
10850
6889f793b918 [gaim-migrate @ 12522]
Mark Doliner <markdoliner@pidgin.im>
parents: 10681
diff changeset
1424 static void dnd_image_cancel_callback(_DndData *data, int choice)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1425 {
25152
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1426 g_free(data->filename);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1427 g_free(data->who);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1428 g_free(data);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1429 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1430
11110
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1431 static void dnd_set_icon_ok_cb(_DndData *data)
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1432 {
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1433 dnd_image_ok_callback(data, DND_BUDDY_ICON);
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1434 }
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1435
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1436 static void dnd_set_icon_cancel_cb(_DndData *data)
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1437 {
25152
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1438 g_free(data->filename);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1439 g_free(data->who);
128b99dfb286 Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <darkrain42@pidgin.im>
parents: 24860
diff changeset
1440 g_free(data);
11110
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1441 }
acc4e51cb91a [gaim-migrate @ 13162]
Richard Laager <rlaager@pidgin.im>
parents: 11017
diff changeset
1442
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1443 void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1444 pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char *who)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1445 {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1446 GdkPixbuf *pb;
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1447 GList *files = purple_uri_list_extract_filenames((const gchar *) gtk_selection_data_get_data(sd));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1448 PurpleConnection *gc = purple_account_get_connection(account);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1449 PurplePluginProtocolInfo *prpl_info = NULL;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1450 #ifndef _WIN32
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1451 PurpleDesktopItem *item;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1452 #endif
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1453 gchar *filename = NULL;
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1454 gchar *basename = NULL;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1455
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1456 g_return_if_fail(account != NULL);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1457 g_return_if_fail(who != NULL);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1458
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1459 for ( ; files; files = g_list_delete_link(files, files)) {
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1460 g_free(filename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1461 g_free(basename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1462
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1463 filename = files->data;
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1464 basename = g_path_get_basename(filename);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1465
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1466 /* XXX - Make ft API support creating a transfer with more than one file */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1467 if (!g_file_test(filename, G_FILE_TEST_EXISTS)) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1468 continue;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1469 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1470
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1471 /* XXX - make ft api suupport sending a directory */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1472 /* Are we dealing with a directory? */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1473 if (g_file_test(filename, G_FILE_TEST_IS_DIR)) {
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1474 char *str, *str2;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1475
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1476 str = g_strdup_printf(_("Cannot send folder %s."), basename);
16977
c9cb49bea66d Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@pidgin.im>
parents: 16692
diff changeset
1477 str2 = g_strdup_printf(_("%s cannot transfer a folder. You will need to send the files within individually."), PIDGIN_NAME);
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1478
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1479 purple_notify_error(NULL, NULL,
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1480 str, str2);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1481
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1482 g_free(str);
16071
044392e01c96 make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15987
diff changeset
1483 g_free(str2);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1484 continue;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1485 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1486
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1487 /* Are we dealing with an image? */
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
1488 pb = pidgin_pixbuf_new_from_file(filename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1489 if (pb) {
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1490 _DndData *data = g_malloc(sizeof(_DndData));
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1491 gboolean ft = FALSE, im = FALSE;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1492
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1493 data->who = g_strdup(who);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1494 data->filename = g_strdup(filename);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1495 data->account = account;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1496
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1497 if (gc)
32678
01f6312a4a7b On the way to hiding the PurpleConnection struct.
Andrew Victor <andrew.victor@mxit.com>
parents: 32620
diff changeset
1498 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(purple_connection_get_prpl(gc));
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10335
diff changeset
1499
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1500 if (prpl_info && prpl_info->options & OPT_PROTO_IM_IMAGE)
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1501 im = TRUE;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1502
10348
0ab5eb1a828e [gaim-migrate @ 11562]
Mark Doliner <markdoliner@pidgin.im>
parents: 10335
diff changeset
1503 if (prpl_info && prpl_info->can_receive_file)
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1504 ft = prpl_info->can_receive_file(gc, who);
20976
c5cf79b99382 When drag-dropping an image onto a conversation, include 'Send image file' as
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20895
diff changeset
1505 else if (prpl_info && prpl_info->send_file)
c5cf79b99382 When drag-dropping an image onto a conversation, include 'Send image file' as
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 20895
diff changeset
1506 ft = TRUE;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1507
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1508 if (im && ft)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1509 purple_request_choice(NULL, NULL,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1510 _("You have dragged an image"),
10951
a81bececc6f0 [gaim-migrate @ 12751]
Richard Laager <rlaager@pidgin.im>
parents: 10871
diff changeset
1511 _("You can send this image as a file transfer, "
a81bececc6f0 [gaim-migrate @ 12751]
Richard Laager <rlaager@pidgin.im>
parents: 10871
diff changeset
1512 "embed it into this message, or use it as the buddy icon for this user."),
29245
4b650ff83b2d Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29197
diff changeset
1513 DND_FILE_TRANSFER, _("OK"), (GCallback)dnd_image_ok_callback,
4b650ff83b2d Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29197
diff changeset
1514 _("Cancel"), (GCallback)dnd_image_cancel_callback,
34330
35d5e8fcc07b Request API refactoring: switch purple_request_choice to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34308
diff changeset
1515 purple_request_cpar_from_account(account),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1516 data,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1517 _("Set as buddy icon"), DND_BUDDY_ICON,
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1518 _("Send image file"), DND_FILE_TRANSFER,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1519 _("Insert in message"), DND_IM_IMAGE,
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1520 NULL);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1521 else if (!(im || ft))
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1522 purple_request_yes_no(NULL, NULL, _("You have dragged an image"),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1523 _("Would you like to set it as the buddy icon for this user?"),
22269
3fdf7b13f20a A few more of those "default_action" fixes
Mark Doliner <markdoliner@pidgin.im>
parents: 22140
diff changeset
1524 PURPLE_DEFAULT_ACTION_NONE,
34331
c8486462bb63 Request API refactoring: switch purple_request_action to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34330
diff changeset
1525 purple_request_cpar_from_account(account),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1526 data, (GCallback)dnd_set_icon_ok_cb, (GCallback)dnd_set_icon_cancel_cb);
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1527 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1528 purple_request_choice(NULL, NULL,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1529 _("You have dragged an image"),
17497
6cbc2e55e878 Fix the "transfer file or embed image" message (it looks like it was copied and pasted incorrectly).
Daniel Atallah <datallah@pidgin.im>
parents: 17487
diff changeset
1530 (ft ? _("You can send this image as a file transfer, or use it as the buddy icon for this user.") :
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1531 _("You can insert this image into this message, or use it as the buddy icon for this user")),
34338
c652670afac5 Request API refactoring: custom PURPLE_REQUEST_CHOICE values, instead of indexes
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34333
diff changeset
1532 GINT_TO_POINTER(ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
29245
4b650ff83b2d Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29197
diff changeset
1533 _("OK"), (GCallback)dnd_image_ok_callback,
4b650ff83b2d Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29197
diff changeset
1534 _("Cancel"), (GCallback)dnd_image_cancel_callback,
34330
35d5e8fcc07b Request API refactoring: switch purple_request_choice to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34308
diff changeset
1535 purple_request_cpar_from_account(account),
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1536 data,
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1537 _("Set as buddy icon"), DND_BUDDY_ICON,
16490
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1538 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
68c22924d66b Added account, who, and conversation parameters to the request API calls, and updated all code to match. I can't compile the Perl module, so I'd appreciate it if someone who knows it would verify that this doesn't break Perl.
Evan Schoenberg <evands@pidgin.im>
parents: 16314
diff changeset
1539 NULL);
26820
76f90ca8f6f2 Use g_object_ref/unref instead of the deprecated versions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26753
diff changeset
1540 g_object_unref(G_OBJECT(pb));
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1541
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1542 g_free(basename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1543 while (files) {
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1544 g_free(files->data);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1545 files = g_list_delete_link(files, files);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1546 }
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1547 return;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1548 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1549
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1550 #ifndef _WIN32
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1551 /* Are we trying to send a .desktop file? */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1552 else if (purple_str_has_suffix(basename, ".desktop") && (item = purple_desktop_item_new_from_file(filename))) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1553 PurpleDesktopItemType dtype;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1554 char key[64];
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1555 const char *itemname = NULL;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1556
10679
3b71abc53c06 [gaim-migrate @ 12225]
Nathan Walp <nwalp@pidgin.im>
parents: 10590
diff changeset
1557 const char * const *langs;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1558 langs = g_get_language_names();
33794
716cbef8d1c6 Fix a number of additional trivial issues - unused variables, etc.
Daniel Atallah <datallah@pidgin.im>
parents: 33477
diff changeset
1559 if (langs[0]) {
716cbef8d1c6 Fix a number of additional trivial issues - unused variables, etc.
Daniel Atallah <datallah@pidgin.im>
parents: 33477
diff changeset
1560 g_snprintf(key, sizeof(key), "Name[%s]", langs[0]);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1561 itemname = purple_desktop_item_get_string(item, key);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1562 }
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1563
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1564 if (!itemname)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1565 itemname = purple_desktop_item_get_string(item, "Name");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1566
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1567 dtype = purple_desktop_item_get_entry_type(item);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1568 switch (dtype) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1569 PurpleConversation *conv;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1570 PidginConversation *gtkconv;
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1571
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1572 case PURPLE_DESKTOP_ITEM_TYPE_LINK:
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1573 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1574 gtkconv = PIDGIN_CONVERSATION(conv);
33269
1ea2edfac5e9 Convert some more util stuff to a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33232
diff changeset
1575 gtk_webview_insert_link(GTK_WEBVIEW(gtkconv->entry),
1ea2edfac5e9 Convert some more util stuff to a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33232
diff changeset
1576 purple_desktop_item_get_string(item, "URL"),
1ea2edfac5e9 Convert some more util stuff to a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33232
diff changeset
1577 itemname);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1578 break;
10335
cf53f16ad85d [gaim-migrate @ 11542]
Kevin Stange <kstange@pidgin.im>
parents: 10240
diff changeset
1579 default:
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1580 /* I don't know if we really want to do anything here. Most of
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1581 * the desktop item types are crap like "MIME Type" (I have no
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1582 * clue how that would be a desktop item) and "Comment"...
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1583 * nothing we can really send. The only logical one is
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1584 * "Application," but do we really want to send a binary and
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1585 * nothing else? Probably not. I'll just give an error and
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
1586 * return. */
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1587 /* The original patch sent the icon used by the launcher. That's probably wrong */
27525
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27216
diff changeset
1588 purple_notify_error(NULL, NULL, _("Cannot send launcher"),
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27216
diff changeset
1589 _("You dragged a desktop launcher. Most "
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27216
diff changeset
1590 "likely you wanted to send the target "
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27216
diff changeset
1591 "of this launcher instead of this "
579b9d64b364 A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27216
diff changeset
1592 "launcher itself."));
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1593 break;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1594 }
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1595 purple_desktop_item_unref(item);
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1596 g_free(basename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1597 while (files) {
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1598 g_free(files->data);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1599 files = g_list_delete_link(files, files);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1600 }
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1601 return;
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1602 }
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1603 #endif /* _WIN32 */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1604
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1605 /* Everything is fine, let's send */
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1606 serv_send_file(gc, who, filename);
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1607 }
28458
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1608
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1609 g_free(filename);
850dc251c138 Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <darkrain42@pidgin.im>
parents: 28234
diff changeset
1610 g_free(basename);
10229
39ffee70c286 [gaim-migrate @ 11364]
Alceste Scalas <alceste.scalas@gmx.net>
parents: 10209
diff changeset
1611 }
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1612
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1613 void pidgin_buddy_icon_get_scale_size(GdkPixbuf *buf, PurpleBuddyIconSpec *spec, PurpleIconScaleRules rules, int *width, int *height)
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1614 {
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1615 *width = gdk_pixbuf_get_width(buf);
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1616 *height = gdk_pixbuf_get_height(buf);
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1617
15301
26153c5f156a [gaim-migrate @ 18029]
Mark Doliner <markdoliner@pidgin.im>
parents: 15289
diff changeset
1618 if ((spec == NULL) || !(spec->scale_rules & rules))
26153c5f156a [gaim-migrate @ 18029]
Mark Doliner <markdoliner@pidgin.im>
parents: 15289
diff changeset
1619 return;
26153c5f156a [gaim-migrate @ 18029]
Mark Doliner <markdoliner@pidgin.im>
parents: 15289
diff changeset
1620
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1621 purple_buddy_icon_get_scale_size(spec, width, height);
10483
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1622
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1623 /* and now for some arbitrary sanity checks */
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1624 if(*width > 100)
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1625 *width = 100;
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1626 if(*height > 100)
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1627 *height = 100;
e7b09a8b1f52 [gaim-migrate @ 11773]
Nathan Walp <nwalp@pidgin.im>
parents: 10348
diff changeset
1628 }
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1629
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1630 GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive prim, GtkWidget *w, const char *size)
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1631 {
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1632 GtkIconSize icon_size = gtk_icon_size_from_name(size);
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1633 GdkPixbuf *pixbuf = NULL;
26847
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1634 const char *stock = pidgin_stock_id_from_status_primitive(prim);
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1635
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1636 pixbuf = gtk_widget_render_icon (w, stock ? stock : PIDGIN_STOCK_STATUS_AVAILABLE,
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
1637 icon_size, "GtkWidget");
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1638 return pixbuf;
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1639 }
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1640
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1641 static const char *
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1642 stock_id_from_status_primitive_idle(PurpleStatusPrimitive prim, gboolean idle)
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1643 {
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1644 const char *stock = NULL;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1645 switch (prim) {
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1646 case PURPLE_STATUS_UNSET:
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1647 stock = NULL;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1648 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1649 case PURPLE_STATUS_UNAVAILABLE:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1650 stock = idle ? PIDGIN_STOCK_STATUS_BUSY_I : PIDGIN_STOCK_STATUS_BUSY;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1651 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1652 case PURPLE_STATUS_AWAY:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1653 stock = idle ? PIDGIN_STOCK_STATUS_AWAY_I : PIDGIN_STOCK_STATUS_AWAY;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1654 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1655 case PURPLE_STATUS_EXTENDED_AWAY:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1656 stock = idle ? PIDGIN_STOCK_STATUS_XA_I : PIDGIN_STOCK_STATUS_XA;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1657 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1658 case PURPLE_STATUS_INVISIBLE:
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1659 stock = PIDGIN_STOCK_STATUS_INVISIBLE;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1660 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1661 case PURPLE_STATUS_OFFLINE:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1662 stock = idle ? PIDGIN_STOCK_STATUS_OFFLINE_I : PIDGIN_STOCK_STATUS_OFFLINE;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1663 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1664 default:
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1665 stock = idle ? PIDGIN_STOCK_STATUS_AVAILABLE_I : PIDGIN_STOCK_STATUS_AVAILABLE;
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1666 break;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1667 }
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1668 return stock;
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26821
diff changeset
1669 }
15799
ba7af742a0d1 Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@pidgin.im>
parents: 15645
diff changeset
1670
26894
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1671 const char *
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1672 pidgin_stock_id_from_status_primitive(PurpleStatusPrimitive prim)
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1673 {
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1674 return stock_id_from_status_primitive_idle(prim, FALSE);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1675 }
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1676
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1677 const char *
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1678 pidgin_stock_id_from_presence(PurplePresence *presence)
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1679 {
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1680 PurpleStatus *status;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1681 PurpleStatusType *type;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1682 PurpleStatusPrimitive prim;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1683 gboolean idle;
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1684
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1685 g_return_val_if_fail(presence, NULL);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1686
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1687 status = purple_presence_get_active_status(presence);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1688 type = purple_status_get_type(status);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1689 prim = purple_status_type_get_primitive(type);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1690
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1691 idle = purple_presence_is_idle(presence);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1692
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1693 return stock_id_from_status_primitive_idle(prim, idle);
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1694 }
a48de595d2ee New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26865
diff changeset
1695
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1696 GdkPixbuf *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1697 pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize size)
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1698 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1699 PurplePlugin *prpl;
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1700
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1701 g_return_val_if_fail(account != NULL, NULL);
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12067
diff changeset
1702
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1703 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1704 if (prpl == NULL)
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1705 return NULL;
17368
e2c6cb39043c Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17363
diff changeset
1706 return pidgin_create_prpl_icon_from_prpl(prpl, size, account);
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1707 }
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13081
diff changeset
1708
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1709 static void
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1710 menu_action_cb(GtkMenuItem *item, gpointer object)
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1711 {
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1712 gpointer data;
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1713 void (*callback)(gpointer, gpointer);
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1714
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1715 callback = g_object_get_data(G_OBJECT(item), "purplecallback");
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1716 data = g_object_get_data(G_OBJECT(item), "purplecallbackdata");
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1717
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1718 if (callback)
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1719 callback(object, data);
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1720 }
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1721
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1722 GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1723 pidgin_append_menu_action(GtkWidget *menu, PurpleMenuAction *act,
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1724 gpointer object)
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1725 {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1726 GtkWidget *menuitem;
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1727 GList *list;
17386
f68ba6199d79 merge of 'de0c8e6287f1090343edb9c43e0d8d681e58df07'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17368 17385
diff changeset
1728
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1729 if (act == NULL) {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1730 return pidgin_separator(menu);
17386
f68ba6199d79 merge of 'de0c8e6287f1090343edb9c43e0d8d681e58df07'
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17368 17385
diff changeset
1731 }
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1732
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1733 list = purple_menu_action_get_children(act);
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1734 menuitem = gtk_menu_item_new_with_mnemonic(purple_menu_action_get_label(act));
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1735
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1736 if (list == NULL) {
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1737 PurpleCallback callback;
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1738
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1739 callback = purple_menu_action_get_callback(act);
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1740
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1741 if (callback != NULL) {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1742 g_object_set_data(G_OBJECT(menuitem),
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1743 "purplecallback",
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1744 callback);
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1745 g_object_set_data(G_OBJECT(menuitem),
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1746 "purplecallbackdata",
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1747 purple_menu_action_get_data(act));
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1748 g_signal_connect(G_OBJECT(menuitem), "activate",
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1749 G_CALLBACK(menu_action_cb),
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1750 object);
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1751 } else {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1752 gtk_widget_set_sensitive(menuitem, FALSE);
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1753 }
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1754
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1755 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1756 } else {
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1757 GList *l = NULL;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1758 GtkWidget *submenu = NULL;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1759 GtkAccelGroup *group;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1760
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1761 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1762
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1763 submenu = gtk_menu_new();
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1764 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1765
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1766 group = gtk_menu_get_accel_group(GTK_MENU(menu));
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1767 if (group) {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
1768 char *path = g_strdup_printf("%s/%s",
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32415
diff changeset
1769 gtk_menu_item_get_accel_path(GTK_MENU_ITEM(menuitem)),
33120
f6f1a27ade72 propagate from branch 'im.pidgin.pidgin' (head 681ca041d42bb5093590d0ac5495f1309e1472f2)
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32749 32436
diff changeset
1770 purple_menu_action_get_label(act));
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1771 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1772 g_free(path);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1773 gtk_menu_set_accel_group(GTK_MENU(submenu), group);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1774 }
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1775
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1776 for (l = list; l; l = l->next) {
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1777 PurpleMenuAction *act = (PurpleMenuAction *)l->data;
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1778
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1779 pidgin_append_menu_action(submenu, act, object);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1780 }
32287
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1781 g_list_free(list);
c8cf9b704a49 Hide-a-PurpleMenuAction.
Jorge Villaseñor <masca@cpw.pidgin.im>
parents: 32229
diff changeset
1782 purple_menu_action_set_children(act, NULL);
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1783 }
17363
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1784 purple_menu_action_free(act);
f16ea1b259e2 Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17360
diff changeset
1785 return menuitem;
12919
519199cca273 [gaim-migrate @ 15272]
Etan Reisner <deryni@pidgin.im>
parents: 12905
diff changeset
1786 }
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1787
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1788 enum {
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1789 COMPLETION_DISPLAYED_COLUMN, /* displayed completion value */
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1790 COMPLETION_BUDDY_COLUMN, /* buddy name */
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1791 COMPLETION_NORMALIZED_COLUMN, /* UTF-8 normalized & casefolded buddy name */
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1792 COMPLETION_COMPARISON_COLUMN, /* UTF-8 normalized & casefolded value for comparison */
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1793 COMPLETION_ACCOUNT_COLUMN, /* account */
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1794 COMPLETION_COLUMN_COUNT
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1795 };
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1796
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1797 typedef struct
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1798 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1799 GtkWidget *entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1800 GtkWidget *accountopt;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1801
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1802 PidginFilterBuddyCompletionEntryFunc filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1803 gpointer filter_func_user_data;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1804
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1805 GtkListStore *store;
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1806 } PidginCompletionData;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1807
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1808 static gboolean buddyname_completion_match_func(GtkEntryCompletion *completion,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1809 const gchar *key, GtkTreeIter *iter, gpointer user_data)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1810 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1811 GtkTreeModel *model;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1812 GValue val1;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1813 GValue val2;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1814 const char *tmp;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1815
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1816 model = gtk_entry_completion_get_model(completion);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1817
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1818 val1.g_type = 0;
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1819 gtk_tree_model_get_value(model, iter, COMPLETION_NORMALIZED_COLUMN, &val1);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1820 tmp = g_value_get_string(&val1);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1821 if (tmp != NULL && purple_str_has_prefix(tmp, key))
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1822 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1823 g_value_unset(&val1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1824 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1825 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1826 g_value_unset(&val1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1827
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1828 val2.g_type = 0;
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1829 gtk_tree_model_get_value(model, iter, COMPLETION_COMPARISON_COLUMN, &val2);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1830 tmp = g_value_get_string(&val2);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1831 if (tmp != NULL && purple_str_has_prefix(tmp, key))
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1832 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1833 g_value_unset(&val2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1834 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1835 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1836 g_value_unset(&val2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1837
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1838 return FALSE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1839 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1840
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1841 static gboolean buddyname_completion_match_selected_cb(GtkEntryCompletion *completion,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1842 GtkTreeModel *model, GtkTreeIter *iter, PidginCompletionData *data)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1843 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1844 GValue val;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1845 GtkWidget *optmenu = data->accountopt;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1846 PurpleAccount *account;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1847
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1848 val.g_type = 0;
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1849 gtk_tree_model_get_value(model, iter, COMPLETION_BUDDY_COLUMN, &val);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1850 gtk_entry_set_text(GTK_ENTRY(data->entry), g_value_get_string(&val));
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1851 g_value_unset(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1852
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1853 gtk_tree_model_get_value(model, iter, COMPLETION_ACCOUNT_COLUMN, &val);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1854 account = g_value_get_pointer(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1855 g_value_unset(&val);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1856
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1857 if (account == NULL)
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1858 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1859
17117
d256023d5312 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17116
diff changeset
1860 if (optmenu != NULL)
17385
bf46968ab031 Casting things to gpointer isn't useful, unless they were previously const.
Richard Laager <rlaager@pidgin.im>
parents: 17377
diff changeset
1861 aop_option_menu_select_by_data(optmenu, account);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1862
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1863 return TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1864 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1865
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1866 static void
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1867 add_buddyname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1868 const PurpleAccount *account, const char *buddyname)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1869 {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1870 GtkTreeIter iter;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1871 gboolean completion_added = FALSE;
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1872 gchar *normalized_buddyname;
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1873 gchar *tmp;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1874
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1875 tmp = g_utf8_normalize(buddyname, -1, G_NORMALIZE_DEFAULT);
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1876 normalized_buddyname = g_utf8_casefold(tmp, -1);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1877 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1878
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1879 /* There's no sense listing things like: 'xxx "xxx"'
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1880 when the name and buddy alias match. */
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1881 if (buddy_alias && strcmp(buddy_alias, buddyname)) {
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1882 char *completion_entry = g_strdup_printf("%s \"%s\"", buddyname, buddy_alias);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1883 char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1884
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1885 tmp = g_utf8_casefold(tmp2, -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1886 g_free(tmp2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1887
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1888 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1889 gtk_list_store_set(store, &iter,
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1890 COMPLETION_DISPLAYED_COLUMN, completion_entry,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1891 COMPLETION_BUDDY_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1892 COMPLETION_NORMALIZED_COLUMN, normalized_buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1893 COMPLETION_COMPARISON_COLUMN, tmp,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1894 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1895 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1896 g_free(completion_entry);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1897 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1898 completion_added = TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1899 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1900
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1901 /* There's no sense listing things like: 'xxx "xxx"'
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1902 when the name and contact alias match. */
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1903 if (contact_alias && strcmp(contact_alias, buddyname)) {
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1904 /* We don't want duplicates when the contact and buddy alias match. */
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1905 if (!buddy_alias || strcmp(contact_alias, buddy_alias)) {
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1906 char *completion_entry = g_strdup_printf("%s \"%s\"",
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1907 buddyname, contact_alias);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1908 char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1909
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1910 tmp = g_utf8_casefold(tmp2, -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1911 g_free(tmp2);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1912
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1913 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1914 gtk_list_store_set(store, &iter,
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1915 COMPLETION_DISPLAYED_COLUMN, completion_entry,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1916 COMPLETION_BUDDY_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1917 COMPLETION_NORMALIZED_COLUMN, normalized_buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1918 COMPLETION_COMPARISON_COLUMN, tmp,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1919 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1920 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1921 g_free(completion_entry);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1922 g_free(tmp);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1923 completion_added = TRUE;
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1924 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1925 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1926
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1927 if (completion_added == FALSE) {
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1928 /* Add the buddy's name. */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1929 gtk_list_store_append(store, &iter);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1930 gtk_list_store_set(store, &iter,
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1931 COMPLETION_DISPLAYED_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1932 COMPLETION_BUDDY_COLUMN, buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1933 COMPLETION_NORMALIZED_COLUMN, normalized_buddyname,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1934 COMPLETION_COMPARISON_COLUMN, NULL,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
1935 COMPLETION_ACCOUNT_COLUMN, account,
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1936 -1);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1937 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1938
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1939 g_free(normalized_buddyname);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1940 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1941
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1942 static void get_log_set_name(PurpleLogSet *set, gpointer value, PidginCompletionData *data)
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1943 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1944 PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1945 gpointer user_data = data->filter_func_user_data;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1946
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1947 /* 1. Don't show buddies because we will have gotten them already.
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1948 * 2. The boxes that use this autocomplete code handle only IMs. */
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1949 if (!set->buddy && set->type == PURPLE_LOG_IM) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1950 PidginBuddyCompletionEntry entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1951 entry.is_buddy = FALSE;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1952 entry.entry.logged_buddy = set;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1953
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1954 if (filter_func(&entry, user_data)) {
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1955 add_buddyname_autocomplete_entry(data->store,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1956 NULL, NULL, set->account, set->name);
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1957 }
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1958 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1959 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
1960
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1961 static void
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
1962 add_completion_list(PidginCompletionData *data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1963 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1964 PurpleBlistNode *gnode, *cnode, *bnode;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1965 PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1966 gpointer user_data = data->filter_func_user_data;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1967 GHashTable *sets;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1968
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1969 gtk_list_store_clear(data->store);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1970
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1971 for (gnode = purple_get_blist()->root; gnode != NULL; gnode = gnode->next)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1972 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1973 if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1974 continue;
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1975
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1976 for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1977 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1978 if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1979 continue;
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1980
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1981 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1982 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1983 PidginBuddyCompletionEntry entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1984 entry.is_buddy = TRUE;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1985 entry.entry.buddy = (PurpleBuddy *) bnode;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1986
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1987 if (filter_func(&entry, user_data)) {
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
1988 add_buddyname_autocomplete_entry(data->store,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1989 ((PurpleContact *)cnode)->alias,
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1990 purple_buddy_get_contact_alias(entry.entry.buddy),
32709
0edad3ff7243 Use the PurpleBuddy accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1991 purple_buddy_get_account(entry.entry.buddy),
0edad3ff7243 Use the PurpleBuddy accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
1992 purple_buddy_get_name(entry.entry.buddy)
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1993 );
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1994 }
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1995 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1996 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
1997 }
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
1998
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1999 sets = purple_log_get_log_sets();
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2000 g_hash_table_foreach(sets, (GHFunc)get_log_set_name, data);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2001 g_hash_table_destroy(sets);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2002
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2003 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2004
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2005 static void
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2006 buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2007 {
17707
b5f042209c68 Unleak a few bytes in the screenname completion code
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 17605
diff changeset
2008 g_free(data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2009 purple_signals_disconnect_by_handle(widget);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2010 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2011
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2012 static void
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2013 repopulate_autocomplete(gpointer something, gpointer data)
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2014 {
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2015 add_completion_list(data);
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2016 }
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2017
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2018 void
33698
e730d1a5f058 Rename pidgin_setup_screenname_autocomplete_with_filter to pidgin_setup_screenname_autocomplete.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33661
diff changeset
2019 pidgin_setup_screenname_autocomplete(GtkWidget *entry, GtkWidget *accountopt, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2020 {
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2021 PidginCompletionData *data;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2022
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2023 /*
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2024 * Store the displayed completion value, the buddy name, the UTF-8
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2025 * normalized & casefolded buddy name, the UTF-8 normalized &
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2026 * casefolded value for comparison, and the account.
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2027 */
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2028 GtkListStore *store;
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2029
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2030 GtkEntryCompletion *completion;
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2031
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2032 data = g_new0(PidginCompletionData, 1);
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
2033 store = gtk_list_store_new(COMPLETION_COLUMN_COUNT, G_TYPE_STRING,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
2034 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
2035 G_TYPE_POINTER);
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2036
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2037 data->entry = entry;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2038 data->accountopt = accountopt;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2039 if (filter_func == NULL) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2040 data->filter_func = pidgin_screenname_autocomplete_default_filter;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2041 data->filter_func_user_data = NULL;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2042 } else {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2043 data->filter_func = filter_func;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2044 data->filter_func_user_data = user_data;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2045 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2046 data->store = store;
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2047
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2048 add_completion_list(data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2049
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2050 /* Sort the completion list by buddy name */
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2051 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
2052 COMPLETION_BUDDY_COLUMN,
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
2053 GTK_SORT_ASCENDING);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2054
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2055 completion = gtk_entry_completion_new();
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2056 gtk_entry_completion_set_match_func(completion, buddyname_completion_match_func, NULL, NULL);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2057
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2058 g_signal_connect(G_OBJECT(completion), "match-selected",
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2059 G_CALLBACK(buddyname_completion_match_selected_cb), data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2060
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2061 gtk_entry_set_completion(GTK_ENTRY(entry), completion);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2062 g_object_unref(completion);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2063
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2064 gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2065 g_object_unref(store);
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2066
32933
956eb215f6c6 Make code a bit more verbose, and remove some "magic numbers".
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32927
diff changeset
2067 gtk_entry_completion_set_text_column(completion, COMPLETION_DISPLAYED_COLUMN);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2068
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2069 purple_signal_connect(purple_connections_get_handle(), "signed-on", entry,
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2070 PURPLE_CALLBACK(repopulate_autocomplete), data);
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2071 purple_signal_connect(purple_connections_get_handle(), "signed-off", entry,
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2072 PURPLE_CALLBACK(repopulate_autocomplete), data);
13366
e01cf252b407 [gaim-migrate @ 15738]
Richard Laager <rlaager@pidgin.im>
parents: 13365
diff changeset
2073
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2074 purple_signal_connect(purple_accounts_get_handle(), "account-added", entry,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2075 PURPLE_CALLBACK(repopulate_autocomplete), data);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2076 purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry,
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2077 PURPLE_CALLBACK(repopulate_autocomplete), data);
13365
8e6ae65497ef [gaim-migrate @ 15737]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13361
diff changeset
2078
25889
26d9ca30335c Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2079 g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
13361
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2080 }
bb2f64cf6721 [gaim-migrate @ 15733]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13281
diff changeset
2081
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2082 gboolean
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2083 pidgin_screenname_autocomplete_default_filter(const PidginBuddyCompletionEntry *completion_entry, gpointer all_accounts) {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2084 gboolean all = GPOINTER_TO_INT(all_accounts);
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2085
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2086 if (completion_entry->is_buddy) {
32709
0edad3ff7243 Use the PurpleBuddy accessor functions.
Andrew Victor <andrew.victor@mxit.com>
parents: 32678
diff changeset
2087 return all || purple_account_is_connected(purple_buddy_get_account(completion_entry->entry.buddy));
18966
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2088 } else {
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2089 return all || (completion_entry->entry.logged_buddy->account != NULL && purple_account_is_connected(completion_entry->entry.logged_buddy->account));
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2090 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2091 }
6a0715b72b6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@pidgin.im>
parents: 18941
diff changeset
2092
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2093 void pidgin_set_cursor(GtkWidget *widget, GdkCursorType cursor_type)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2094 {
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2095 GdkCursor *cursor;
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2096
13470
5550131ec50b [gaim-migrate @ 15845]
Richard Laager <rlaager@pidgin.im>
parents: 13435
diff changeset
2097 g_return_if_fail(widget != NULL);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2098 if (gtk_widget_get_window(widget) == NULL)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2099 return;
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2100
22787
18842b6fda42 Use the desired cursor, instead of always using GDK_WATCH.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22702
diff changeset
2101 cursor = gdk_cursor_new(cursor_type);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2102 gdk_window_set_cursor(gtk_widget_get_window(widget), cursor);
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2103 gdk_cursor_unref(cursor);
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2104
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2105 gdk_display_flush(gdk_window_get_display(gtk_widget_get_window(widget)));
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2106 }
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2107
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2108 void pidgin_clear_cursor(GtkWidget *widget)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2109 {
13470
5550131ec50b [gaim-migrate @ 15845]
Richard Laager <rlaager@pidgin.im>
parents: 13435
diff changeset
2110 g_return_if_fail(widget != NULL);
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2111 if (gtk_widget_get_window(widget) == NULL)
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2112 return;
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2113
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2114 gdk_window_set_cursor(gtk_widget_get_window(widget), NULL);
13435
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2115 }
4c22eed6e0a6 [gaim-migrate @ 15809]
Richard Laager <rlaager@pidgin.im>
parents: 13372
diff changeset
2116
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2117 struct _icon_chooser {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2118 GtkWidget *icon_filesel;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2119 GtkWidget *icon_preview;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2120 GtkWidget *icon_text;
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15405
diff changeset
2121
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2122 void (*callback)(const char*,gpointer);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2123 gpointer data;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2124 };
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2125
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2126 static void
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2127 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2128 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2129 char *filename, *current_folder;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2130
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2131 if (response != GTK_RESPONSE_ACCEPT) {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2132 if (response == GTK_RESPONSE_CANCEL) {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2133 gtk_widget_destroy(dialog->icon_filesel);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2134 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2135 dialog->icon_filesel = NULL;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2136 if (dialog->callback)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2137 dialog->callback(NULL, dialog->data);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2138 g_free(dialog);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2139 return;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2140 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2141
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2142 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->icon_filesel));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2143 current_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2144 if (current_folder != NULL) {
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2145 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", current_folder);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2146 g_free(current_folder);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2147 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2148
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
2149
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2150 if (dialog->callback)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2151 dialog->callback(filename, dialog->data);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2152 gtk_widget_destroy(dialog->icon_filesel);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2153 g_free(filename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2154 g_free(dialog);
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32415
diff changeset
2155 }
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2156
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2157
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2158 static void
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2159 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2160 {
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
2161 GdkPixbuf *pixbuf;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2162 int height, width;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2163 char *basename, *markup, *size;
33940
b44d15793c83 Use GStatBuf instead of struct stat
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents: 33796
diff changeset
2164 GStatBuf st;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2165 char *filename;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2166
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2167 filename = gtk_file_chooser_get_preview_filename(
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2168 GTK_FILE_CHOOSER(dialog->icon_filesel));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2169
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
2170 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file_at_size(filename, 128, 128)))
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2171 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2172 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2173 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), "");
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2174 g_free(filename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2175 return;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2176 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2177
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
2178 gdk_pixbuf_get_file_info(filename, &width, &height);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2179 basename = g_path_get_basename(filename);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2180 size = purple_str_size_to_units(st.st_size);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2181 markup = g_strdup_printf(_("<b>File:</b> %s\n"
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2182 "<b>File size:</b> %s\n"
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2183 "<b>Image size:</b> %dx%d"),
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2184 basename, size, width, height);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2185
33359
aba982dbb801 Fix sizing for the file-chooser image preview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32043
diff changeset
2186 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), pixbuf);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2187 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2188
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2189 g_object_unref(G_OBJECT(pixbuf));
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2190 g_free(filename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2191 g_free(basename);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2192 g_free(size);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2193 g_free(markup);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2194 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2196
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2197 GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) {
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2198 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2199
17046
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2200 GtkWidget *vbox;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2201 const char *current_folder;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2202
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2203 dialog->callback = callback;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2204 dialog->data = data;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2205
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16071
diff changeset
2206 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2207
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2208 dialog->icon_filesel = gtk_file_chooser_dialog_new(_("Buddy Icon"),
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2209 parent,
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2210 GTK_FILE_CHOOSER_ACTION_OPEN,
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2211 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2212 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2213 NULL);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2214 gtk_dialog_set_default_response(GTK_DIALOG(dialog->icon_filesel), GTK_RESPONSE_ACCEPT);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2215 if ((current_folder != NULL) && (*current_folder != '\0'))
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2216 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel),
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2217 current_folder);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2218
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2219 dialog->icon_preview = gtk_image_new();
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2220 dialog->icon_text = gtk_label_new(NULL);
17046
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2221
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2222 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2223 gtk_widget_set_size_request(GTK_WIDGET(vbox), -1, 50);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2224 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_preview), TRUE, FALSE, 0);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2225 gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_text), FALSE, FALSE, 0);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2226 gtk_widget_show_all(vbox);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2227
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2228 gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog->icon_filesel), vbox);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2229 gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->icon_filesel), TRUE);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2230 gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE);
e1fcb4c68dab Display the image info label in the icon chooser preview area. I'm not sure why this was only being displayed in the pre-GTK 2.4.0 chooser. Also, always use our preview widget - we don't need to fallback to the GTK default previewer, this fixes #458 and seems like the right thing to do in this case.
Daniel Atallah <datallah@pidgin.im>
parents: 17038
diff changeset
2231
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2232 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview",
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2233 G_CALLBACK(icon_preview_change_cb), dialog);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2234 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response",
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2235 G_CALLBACK(icon_filesel_choose_cb), dialog);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2236 icon_preview_change_cb(NULL, dialog);
21729
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2237
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2238 #ifdef _WIN32
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2239 g_signal_connect(G_OBJECT(dialog->icon_filesel), "show",
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2240 G_CALLBACK(winpidgin_ensure_onscreen), dialog->icon_filesel);
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2241 #endif
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2242
a06176e84f3a applied changes from 6546cfd72ecd9aa76fc524aaf3ac48489aeb2a90
Daniel Atallah <datallah@pidgin.im>
parents: 21630
diff changeset
2243 return dialog->icon_filesel;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2244 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2245
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2246 /**
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2247 * @return True if any string from array a exists in array b.
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2248 */
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2249 static gboolean
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2250 str_array_match(char **a, char **b)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2251 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2252 int i, j;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2253
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2254 if (!a || !b)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2255 return FALSE;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2256 for (i = 0; a[i] != NULL; i++)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2257 for (j = 0; b[j] != NULL; j++)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2258 if (!g_ascii_strcasecmp(a[i], b[j]))
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2259 return TRUE;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2260 return FALSE;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2261 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2262
16446
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2263 gpointer
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2264 pidgin_convert_buddy_icon(PurplePlugin *plugin, const char *path, size_t *len)
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2265 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2266 PurplePluginProtocolInfo *prpl_info;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2267 PurpleBuddyIconSpec *spec;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2268 int orig_width, orig_height, new_width, new_height;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2269 GdkPixbufFormat *format;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2270 char **pixbuf_formats;
14720
6751e3e9c5bf [gaim-migrate @ 17404]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14717
diff changeset
2271 char **prpl_formats;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2272 GError *error = NULL;
15284
98e8f9912107 [gaim-migrate @ 18012]
Mark Doliner <markdoliner@pidgin.im>
parents: 15254
diff changeset
2273 gchar *contents;
98e8f9912107 [gaim-migrate @ 18012]
Mark Doliner <markdoliner@pidgin.im>
parents: 15254
diff changeset
2274 gsize length;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2275 GdkPixbuf *pixbuf, *original;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2276 float scale_factor;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2277 int i;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2278 gchar *tmp;
14203
f3a50c328ddc [gaim-migrate @ 16783]
Mark Doliner <markdoliner@pidgin.im>
parents: 14196
diff changeset
2279
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2280 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2281 spec = &prpl_info->icon_spec;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2282 g_return_val_if_fail(spec->format != NULL, NULL);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2283
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2284 format = gdk_pixbuf_get_file_info(path, &orig_width, &orig_height);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2285 if (format == NULL) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2286 purple_debug_warning("buddyicon", "Could not get file info of %s\n", path);
14206
5a17eb1a2c3e [gaim-migrate @ 16786]
Mark Doliner <markdoliner@pidgin.im>
parents: 14203
diff changeset
2287 return NULL;
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2288 }
15289
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2289
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2290 pixbuf_formats = gdk_pixbuf_format_get_extensions(format);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2291 prpl_formats = g_strsplit(spec->format, ",", 0);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2292
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2293 if (str_array_match(pixbuf_formats, prpl_formats) && /* This is an acceptable format AND */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2294 (!(spec->scale_rules & PURPLE_ICON_SCALE_SEND) || /* The prpl doesn't scale before it sends OR */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2295 (spec->min_width <= orig_width && spec->max_width >= orig_width &&
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2296 spec->min_height <= orig_height && spec->max_height >= orig_height))) /* The icon is the correct size */
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2297 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2298 g_strfreev(pixbuf_formats);
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
2299
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2300 if (!g_file_get_contents(path, &contents, &length, &error)) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2301 purple_debug_warning("buddyicon", "Could not get file contents "
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2302 "of %s: %s\n", path, error->message);
15289
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2303 g_strfreev(prpl_formats);
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2304 return NULL;
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2305 }
2b90dc4e1483 [gaim-migrate @ 18017]
Mark Doliner <markdoliner@pidgin.im>
parents: 15284
diff changeset
2306
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2307 if (spec->max_filesize == 0 || length < spec->max_filesize) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2308 /* The supplied image fits the file size, dimensions and type
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2309 constraints. Great! Return it without making any changes. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2310 if (len)
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2311 *len = length;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2312 g_strfreev(prpl_formats);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2313 return contents;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2314 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2315
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2316 /* The image was too big. Fall-through and try scaling it down. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2317 g_free(contents);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2318 } else {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2319 g_strfreev(pixbuf_formats);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2320 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2321
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2322 /* The original image wasn't compatible. Scale it or convert file type. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2323 pixbuf = gdk_pixbuf_new_from_file(path, &error);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2324 if (error) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2325 purple_debug_warning("buddyicon", "Could not open icon '%s' for "
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2326 "conversion: %s\n", path, error->message);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2327 g_error_free(error);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2328 g_strfreev(prpl_formats);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2329 return NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2330 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2331 original = g_object_ref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2332
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2333 new_width = orig_width;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2334 new_height = orig_height;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2335
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2336 /* Make sure the image is the correct dimensions */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2337 if (spec->scale_rules & PURPLE_ICON_SCALE_SEND &&
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2338 (orig_width < spec->min_width || orig_width > spec->max_width ||
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2339 orig_height < spec->min_height || orig_height > spec->max_height))
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2340 {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2341 purple_buddy_icon_get_scale_size(spec, &new_width, &new_height);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2342
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2343 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2344 pixbuf = gdk_pixbuf_scale_simple(original, new_width, new_height, GDK_INTERP_HYPER);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2345 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2346
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2347 scale_factor = 1;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2348 do {
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2349 for (i = 0; prpl_formats[i]; i++) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2350 int quality = 100;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2351 do {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2352 const char *key = NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2353 const char *value = NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2354 gchar tmp_buf[4];
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2355
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2356 purple_debug_info("buddyicon", "Converting buddy icon to %s\n", prpl_formats[i]);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2357
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2358 if (g_str_equal(prpl_formats[i], "png")) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2359 key = "compression";
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2360 value = "9";
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2361 } else if (g_str_equal(prpl_formats[i], "jpeg")) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2362 sprintf(tmp_buf, "%u", quality);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2363 key = "quality";
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2364 value = tmp_buf;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2365 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2366
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2367 if (!gdk_pixbuf_save_to_buffer(pixbuf, &contents, &length,
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2368 prpl_formats[i], &error, key, value, NULL))
29927
80855a5471ed Use gdk_pixbuf_save_to_buffer() instead of gdk_pixbuf_save() to avoid saving
Mark Doliner <markdoliner@pidgin.im>
parents: 29898
diff changeset
2369 {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2370 /* The NULL checking of error is necessary due to this bug:
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2371 * http://bugzilla.gnome.org/show_bug.cgi?id=405539 */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2372 purple_debug_warning("buddyicon",
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2373 "Could not convert to %s: %s\n", prpl_formats[i],
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2374 (error && error->message) ? error->message : "Unknown error");
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2375 g_error_free(error);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2376 error = NULL;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2377
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2378 /* We couldn't convert to this image type. Try the next
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2379 image type. */
15645
db8c01fc8637 Work around gdk-pixbuf brokenness when dealing with unrecognized parameters. Also, improve the error handling so we don't get a confusing error message.
Daniel Atallah <datallah@pidgin.im>
parents: 15635
diff changeset
2380 break;
db8c01fc8637 Work around gdk-pixbuf brokenness when dealing with unrecognized parameters. Also, improve the error handling so we don't get a confusing error message.
Daniel Atallah <datallah@pidgin.im>
parents: 15635
diff changeset
2381 }
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2382
30054
82871fde0aac Allow icons to be exactly the max file size
Mark Doliner <markdoliner@pidgin.im>
parents: 30053
diff changeset
2383 if (spec->max_filesize == 0 || length <= spec->max_filesize) {
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2384 /* We were able to save the image as this image type and
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2385 have it be within the size constraints. Great! Return
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2386 the image. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2387 purple_debug_info("buddyicon", "Converted image from "
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2388 "%dx%d to %dx%d, format=%s, quality=%u, "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2389 "filesize=%" G_GSIZE_FORMAT "\n",
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2390 orig_width, orig_height, new_width, new_height,
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2391 prpl_formats[i], quality, length);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2392 if (len)
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2393 *len = length;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2394 g_strfreev(prpl_formats);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2395 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2396 g_object_unref(G_OBJECT(original));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2397 return contents;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2398 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2399
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2400 g_free(contents);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2401
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2402 if (!g_str_equal(prpl_formats[i], "jpeg")) {
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2403 /* File size was too big and we can't lower the quality,
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2404 so skip to the next image type. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2405 break;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2406 }
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2407
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2408 /* File size was too big, but we're dealing with jpeg so try
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2409 lowering the quality. */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2410 quality -= 5;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2411 } while (quality >= 70);
16446
3a6ed6c3400e Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@pidgin.im>
parents: 16437
diff changeset
2412 }
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2413
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2414 /* We couldn't save the image in any format that was below the max
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2415 file size. Maybe we can reduce the image dimensions? */
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2416 scale_factor *= 0.8;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2417 new_width = orig_width * scale_factor;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2418 new_height = orig_height * scale_factor;
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2419 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2420 pixbuf = gdk_pixbuf_scale_simple(original, new_width, new_height, GDK_INTERP_HYPER);
30053
223f898b44b2 Oh! When setting a buddy icon, when we reduce the dimension in order to
Mark Doliner <markdoliner@pidgin.im>
parents: 30002
diff changeset
2421 } while ((new_width > 10 || new_height > 10) && new_width > spec->min_width && new_height > spec->min_height);
29931
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2422 g_strfreev(prpl_formats);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2423 g_object_unref(G_OBJECT(pixbuf));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2424 g_object_unref(G_OBJECT(original));
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2425
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2426 tmp = g_strdup_printf(_("The file '%s' is too large for %s. Please try a smaller image.\n"),
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2427 path, plugin->info->name);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2428 purple_notify_error(NULL, _("Icon Error"), _("Could not set icon"), tmp);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2429 g_free(tmp);
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2430
1d21766368d2 Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <markdoliner@pidgin.im>
parents: 29928
diff changeset
2431 return NULL;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14097
diff changeset
2432 }
14290
f20819ff8d86 [gaim-migrate @ 16910]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 14253
diff changeset
2433
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2434 char *pidgin_make_pretty_arrows(const char *str)
15084
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2435 {
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2436 char *ret;
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2437 char **split = g_strsplit(str, "->", -1);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2438 ret = g_strjoinv("\342\207\250", split);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2439 g_strfreev(split);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2440
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2441 split = g_strsplit(ret, "<-", -1);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2442 g_free(ret);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2443 ret = g_strjoinv("\342\207\246", split);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2444 g_strfreev(split);
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2445
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2446 return ret;
6cb675dea5fb [gaim-migrate @ 17804]
Sean Egan <seanegan@pidgin.im>
parents: 14914
diff changeset
2447 }
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2448
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2449 void pidgin_set_urgent(GtkWindow *window, gboolean urgent)
15403
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2450 {
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28234
diff changeset
2451 #if defined _WIN32
15574
18d9d1c05994 Win32 de-gaimification of pidgin
Daniel Atallah <datallah@pidgin.im>
parents: 15568
diff changeset
2452 winpidgin_window_flash(window, urgent);
20288
5ca925a094e2 applied changes from 03b709ec2a153e7e82719df0ba4635108bb1d3c6
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20241
diff changeset
2453 #else
29497
4502da3fe427 I screwed up the logic here and didn't realize it earlier.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29496
diff changeset
2454 gtk_window_set_urgency_hint(window, urgent);
15403
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2455 #endif
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2456 }
116f7fcb07a8 [gaim-migrate @ 18134]
Sean Egan <seanegan@pidgin.im>
parents: 15320
diff changeset
2457
26865
c29554ceb409 Hide the list of minidialogs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26847
diff changeset
2458 static GSList *minidialogs = NULL;
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2459
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2460 static void *
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 22013
diff changeset
2461 pidgin_utils_get_handle(void)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2462 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2463 static int handle;
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2464
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2465 return &handle;
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2466 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2467
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2468 static void connection_signed_off_cb(PurpleConnection *gc)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2469 {
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2470 GSList *list, *l_next;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2471 for (list = minidialogs; list; list = l_next) {
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2472 l_next = list->next;
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2473 if (g_object_get_data(G_OBJECT(list->data), "gc") == gc) {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2474 gtk_widget_destroy(GTK_WIDGET(list->data));
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2475 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2476 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2477 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2478
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2479 static void alert_killed_cb(GtkWidget *widget)
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2480 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2481 minidialogs = g_slist_remove(minidialogs, widget);
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2482 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2483
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2484 struct _old_button_clicked_cb_data
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2485 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2486 PidginUtilMiniDialogCallback cb;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2487 gpointer data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2488 };
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2489
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2490 static void
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2491 old_mini_dialog_button_clicked_cb(PidginMiniDialog *mini_dialog,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2492 GtkButton *button,
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2493 gpointer user_data)
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2494 {
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2495 struct _old_button_clicked_cb_data *data = user_data;
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2496 data->cb(data->data, button);
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2497 }
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2498
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2499 static void
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2500 old_mini_dialog_destroy_cb(GtkWidget *dialog,
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2501 GList *cb_datas)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2502 {
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2503 while (cb_datas != NULL)
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2504 {
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2505 g_free(cb_datas->data);
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2506 cb_datas = g_list_delete_link(cb_datas, cb_datas);
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2507 }
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2508 }
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2509
30635
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2510 static void
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2511 mini_dialog_init(PidginMiniDialog *mini_dialog, PurpleConnection *gc, void *user_data, va_list args)
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2512 {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2513 const char *button_text;
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2514 GList *cb_datas = NULL;
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2515 static gboolean first_call = TRUE;
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2516
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2517 if (first_call) {
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2518 first_call = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2519 purple_signal_connect(purple_connections_get_handle(), "signed-off",
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2520 pidgin_utils_get_handle(),
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2521 PURPLE_CALLBACK(connection_signed_off_cb), NULL);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2522 }
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15405
diff changeset
2523
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2524 g_object_set_data(G_OBJECT(mini_dialog), "gc" ,gc);
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2525 g_signal_connect(G_OBJECT(mini_dialog), "destroy",
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2526 G_CALLBACK(alert_killed_cb), NULL);
15409
37b46bbce4cb [gaim-migrate @ 18140]
Daniel Atallah <datallah@pidgin.im>
parents: 15405
diff changeset
2527
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2528 while ((button_text = va_arg(args, char*))) {
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2529 struct _old_button_clicked_cb_data *data = NULL;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2530 PidginMiniDialogCallback wrapper_cb = NULL;
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2531 PidginUtilMiniDialogCallback callback =
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2532 va_arg(args, PidginUtilMiniDialogCallback);
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2533
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2534 if (callback != NULL) {
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2535 data = g_new0(struct _old_button_clicked_cb_data, 1);
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2536 data->cb = callback;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2537 data->data = user_data;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2538 wrapper_cb = old_mini_dialog_button_clicked_cb;
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2539 }
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2540 pidgin_mini_dialog_add_button(mini_dialog, button_text,
22702
bccd324d76c5 Fix another scenario where a NULL callback can be called. I'm pretty confident this fixes #4901. There's also a fix in here to prevent freed memory from being accessed when removing minidialogs from a signed-off account that I've had sitting on my machine for a while.
Daniel Atallah <datallah@pidgin.im>
parents: 22639
diff changeset
2541 wrapper_cb, data);
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2542 cb_datas = g_list_append(cb_datas, data);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2543 }
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2544
21326
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2545 g_signal_connect(G_OBJECT(mini_dialog), "destroy",
62bb702f824a Don't leak all bar one of the closure structs allocated by
Will Thompson <resiak@pidgin.im>
parents: 21323
diff changeset
2546 G_CALLBACK(old_mini_dialog_destroy_cb), cb_datas);
30635
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2547 }
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2548
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2549 #define INIT_AND_RETURN_MINI_DIALOG(mini_dialog) \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2550 va_list args; \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2551 va_start(args, user_data); \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2552 mini_dialog_init(mini_dialog, gc, user_data, args); \
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2553 va_end(args); \
21323
0ad61638683f Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <resiak@pidgin.im>
parents: 21320
diff changeset
2554 return GTK_WIDGET(mini_dialog);
30635
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2555
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2556 GtkWidget *
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2557 pidgin_make_mini_dialog(PurpleConnection *gc,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2558 const char *icon_name,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2559 const char *primary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2560 const char *secondary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2561 void *user_data,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2562 ...)
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2563 {
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2564 PidginMiniDialog *mini_dialog = pidgin_mini_dialog_new(primary, secondary, icon_name);
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2565 INIT_AND_RETURN_MINI_DIALOG(mini_dialog);
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2566 }
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2567
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2568 GtkWidget *
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2569 pidgin_make_mini_dialog_with_custom_icon(PurpleConnection *gc,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2570 GdkPixbuf *custom_icon,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2571 const char *primary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2572 const char *secondary,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2573 void *user_data,
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2574 ...)
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2575 {
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2576 PidginMiniDialog *mini_dialog = pidgin_mini_dialog_new_with_custom_icon(primary, secondary, custom_icon);
e9893ecc9057 Display the protocol icon for the authorization request dialog
Ivan Komarov <ivan.komarov@pidgin.im>
parents: 30054
diff changeset
2577 INIT_AND_RETURN_MINI_DIALOG(mini_dialog);
15094
7ebf5dd7d969 [gaim-migrate @ 17815]
Sean Egan <seanegan@pidgin.im>
parents: 15084
diff changeset
2578 }
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2579
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2580 /*
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2581 * "This is so dead sexy."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2582 * "Two thumbs up."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2583 * "Best movie of the year."
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2584 *
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2585 * This is the function that handles CTRL+F searching in the buddy list.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2586 * It finds the top-most buddy/group/chat/whatever containing the
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2587 * entered string.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2588 *
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2589 * It's somewhat ineffecient, because we strip all the HTML from the
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2590 * "name" column of the buddy list (because the GtkTreeModel does not
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2591 * contain the screen name in a non-markedup format). But the alternative
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2592 * is to add an extra column to the GtkTreeModel. And this function is
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2593 * used rarely, so it shouldn't matter TOO much.
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2594 */
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15506
diff changeset
2595 gboolean pidgin_tree_view_search_equal_func(GtkTreeModel *model, gint column,
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2596 const gchar *key, GtkTreeIter *iter, gpointer data)
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2597 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2598 gchar *enteredstring;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2599 gchar *tmp;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2600 gchar *withmarkup;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2601 gchar *nomarkup;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2602 gchar *normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2603 gboolean result;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2604 size_t i;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2605 size_t len;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2606 PangoLogAttr *log_attrs;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2607 gchar *word;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2608
17155
143ff2796376 Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@pidgin.im>
parents: 17116
diff changeset
2609 if (g_ascii_strcasecmp(key, "Global Thermonuclear War") == 0)
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2610 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2611 purple_notify_info(NULL, "WOPR",
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2612 "Wouldn't you prefer a nice game of chess?", NULL);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2613 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2614 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2615
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2616 gtk_tree_model_get(model, iter, column, &withmarkup, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2617 if (withmarkup == NULL) /* This is probably a separator */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2618 return TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2619
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2620 tmp = g_utf8_normalize(key, -1, G_NORMALIZE_DEFAULT);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2621 enteredstring = g_utf8_casefold(tmp, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2622 g_free(tmp);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2623
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2624 nomarkup = purple_markup_strip_html(withmarkup);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2625 tmp = g_utf8_normalize(nomarkup, -1, G_NORMALIZE_DEFAULT);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2626 g_free(nomarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2627 normalized = g_utf8_casefold(tmp, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2628 g_free(tmp);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2629
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2630 if (purple_str_has_prefix(normalized, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2631 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2632 g_free(withmarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2633 g_free(enteredstring);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2634 g_free(normalized);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2635 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2636 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2637
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2638
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2639 /* Use Pango to separate by words. */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2640 len = g_utf8_strlen(normalized, -1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2641 log_attrs = g_new(PangoLogAttr, len + 1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2642
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2643 pango_get_log_attrs(normalized, strlen(normalized), -1, NULL, log_attrs, len + 1);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2644
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2645 word = normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2646 result = TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2647 for (i = 0; i < (len - 1) ; i++)
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2648 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2649 if (log_attrs[i].is_word_start &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2650 purple_str_has_prefix(word, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2651 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2652 result = FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2653 break;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2654 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2655 word = g_utf8_next_char(word);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2656 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2657 g_free(log_attrs);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2658
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2659 /* The non-Pango version. */
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2660 #if 0
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2661 word = normalized;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2662 result = TRUE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2663 while (word[0] != '\0')
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2664 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2665 gunichar c = g_utf8_get_char(word);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2666 if (!g_unichar_isalnum(c))
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2667 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2668 word = g_utf8_find_next_char(word, NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2669 if (purple_str_has_prefix(word, enteredstring))
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2670 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2671 result = FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2672 break;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2673 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2674 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2675 else
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2676 word = g_utf8_find_next_char(word, NULL);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2677 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2678 #endif
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2679
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2680 g_free(withmarkup);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2681 g_free(enteredstring);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2682 g_free(normalized);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2683
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2684 return result;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2685 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15114
diff changeset
2686
15320
c4eea0409712 [gaim-migrate @ 18048]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15302
diff changeset
2687
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
2688 gboolean pidgin_gdk_pixbuf_is_opaque(GdkPixbuf *pixbuf) {
30706
612b36b49058 Kill off many dead assignments and any useless remaining variables.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30705
diff changeset
2689 int height, rowstride, i;
30705
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2690 unsigned char *pixels;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2691 unsigned char *row;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2692
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2693 if (!gdk_pixbuf_get_has_alpha(pixbuf))
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2694 return TRUE;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2695
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2696 height = gdk_pixbuf_get_height (pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2697 rowstride = gdk_pixbuf_get_rowstride (pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2698 pixels = gdk_pixbuf_get_pixels (pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2699
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2700 row = pixels;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2701 for (i = 3; i < rowstride; i+=4) {
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2702 if (row[i] < 0xfe)
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2703 return FALSE;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2704 }
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2705
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2706 for (i = 1; i < height - 1; i++) {
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2707 row = pixels + (i * rowstride);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2708 if (row[3] < 0xfe || row[rowstride - 1] < 0xfe) {
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2709 return FALSE;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2710 }
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2711 }
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2712
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2713 row = pixels + ((height - 1) * rowstride);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2714 for (i = 3; i < rowstride; i += 4) {
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2715 if (row[i] < 0xfe)
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2716 return FALSE;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2717 }
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2718
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2719 return TRUE;
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15442
diff changeset
2720 }
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15442
diff changeset
2721
18275
b9633ef422b0 Rounds icons in the infopane. Since gdk_pixbuf_animation_get_static_image seems to return pixbufs without alpha channels, this only rounds animated icons that aren't transparent.
Sean Egan <seanegan@pidgin.im>
parents: 18238
diff changeset
2722 void pidgin_gdk_pixbuf_make_round(GdkPixbuf *pixbuf) {
b9633ef422b0 Rounds icons in the infopane. Since gdk_pixbuf_animation_get_static_image seems to return pixbufs without alpha channels, this only rounds animated icons that aren't transparent.
Sean Egan <seanegan@pidgin.im>
parents: 18238
diff changeset
2723 int width, height, rowstride;
30705
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2724 guchar *pixels;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2725 if (!gdk_pixbuf_get_has_alpha(pixbuf))
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2726 return;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2727 width = gdk_pixbuf_get_width(pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2728 height = gdk_pixbuf_get_height(pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2729 rowstride = gdk_pixbuf_get_rowstride(pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2730 pixels = gdk_pixbuf_get_pixels(pixbuf);
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2731
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2732 if (width < 6 || height < 6)
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2733 return;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2734 /* Top left */
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2735 pixels[3] = 0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2736 pixels[7] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2737 pixels[11] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2738 pixels[rowstride + 3] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2739 pixels[rowstride * 2 + 3] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2740
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2741 /* Top right */
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2742 pixels[width * 4 - 1] = 0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2743 pixels[width * 4 - 5] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2744 pixels[width * 4 - 9] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2745 pixels[rowstride + (width * 4) - 1] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2746 pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2747
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2748 /* Bottom left */
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2749 pixels[(height - 1) * rowstride + 3] = 0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2750 pixels[(height - 1) * rowstride + 7] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2751 pixels[(height - 1) * rowstride + 11] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2752 pixels[(height - 2) * rowstride + 3] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2753 pixels[(height - 3) * rowstride + 3] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2754
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2755 /* Bottom right */
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2756 pixels[height * rowstride - 1] = 0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2757 pixels[(height - 1) * rowstride - 1] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2758 pixels[(height - 2) * rowstride - 1] = 0xC0;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2759 pixels[height * rowstride - 5] = 0x80;
7ff782ca5089 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30688
diff changeset
2760 pixels[height * rowstride - 9] = 0xC0;
18275
b9633ef422b0 Rounds icons in the infopane. Since gdk_pixbuf_animation_get_static_image seems to return pixbufs without alpha channels, this only rounds animated icons that aren't transparent.
Sean Egan <seanegan@pidgin.im>
parents: 18238
diff changeset
2761 }
b9633ef422b0 Rounds icons in the infopane. Since gdk_pixbuf_animation_get_static_image seems to return pixbufs without alpha channels, this only rounds animated icons that aren't transparent.
Sean Egan <seanegan@pidgin.im>
parents: 18238
diff changeset
2762
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2763 const char *pidgin_get_dim_grey_string(GtkWidget *widget) {
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2764 static char dim_grey_string[8] = "";
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2765 GtkStyle *style;
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2766
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2767 if (!widget)
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2768 return "dim grey";
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2769
32422
c215bc5d85e4 Whitespace fixes. Try and check your editor settings before writing
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32415
diff changeset
2770 style = gtk_widget_get_style(widget);
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2771 if (!style)
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2772 return "dim grey";
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 25173
diff changeset
2773
18278
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2774 snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2775 style->text_aa[GTK_STATE_NORMAL].red >> 8,
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2776 style->text_aa[GTK_STATE_NORMAL].green >> 8,
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2777 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2778 return dim_grey_string;
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2779 }
06bf54cee797 Chat topics in status line of chat infopanes
Sean Egan <seanegan@pidgin.im>
parents: 18275
diff changeset
2780
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2781 static void
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2782 combo_box_changed_cb(GtkComboBoxText *combo_box, GtkEntry *entry)
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2783 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2784 char *text = gtk_combo_box_text_get_active_text(combo_box);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2785 gtk_entry_set_text(entry, text ? text : "");
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2786 g_free(text);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2787 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2788
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2789 static gboolean
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2790 entry_key_pressed_cb(GtkWidget *entry, GdkEventKey *key, GtkComboBoxText *combo)
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2791 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2792 if (key->keyval == GDK_KEY_Down || key->keyval == GDK_KEY_Up) {
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2793 gtk_combo_box_popup(GTK_COMBO_BOX(combo));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2794 return TRUE;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2795 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2796 return FALSE;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2797 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2798
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2799 GtkWidget *
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2800 pidgin_text_combo_box_entry_new(const char *default_item, GList *items)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2801 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2802 GtkComboBoxText *ret = NULL;
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2803 GtkWidget *the_entry = NULL;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2804
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
2805 #if GTK_CHECK_VERSION(2,24,0)
32415
59d345017c9b propagate from branch 'im.pidgin.pidgin' (head 8a277be95a4940cd20c64326a70624c4e0449cb7)
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32414 31398
diff changeset
2806 ret = GTK_COMBO_BOX_TEXT(gtk_combo_box_text_new_with_entry());
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
2807 the_entry = gtk_bin_get_child(GTK_BIN(ret));
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
2808 #else
31398
00fa4297311a Modify the editable comboboxes to be more friendly to GTK+ themes that don't
Hugo Pereira Da Costa <hugo@oxygen-icons.org>
parents: 31372
diff changeset
2809 ret = GTK_COMBO_BOX(gtk_combo_box_entry_new_text());
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2810 the_entry = gtk_entry_new();
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2811 gtk_container_add(GTK_CONTAINER(ret), the_entry);
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
2812 #endif
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2813
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2814 if (default_item)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2815 gtk_entry_set_text(GTK_ENTRY(the_entry), default_item);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2816
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2817 for (; items != NULL ; items = items->next) {
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2818 char *text = items->data;
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2819 if (text && *text)
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2820 gtk_combo_box_text_append_text(ret, text);
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2821 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2822
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2823 g_signal_connect(G_OBJECT(ret), "changed", (GCallback)combo_box_changed_cb, the_entry);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2824 g_signal_connect_after(G_OBJECT(the_entry), "key-press-event", G_CALLBACK(entry_key_pressed_cb), ret);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2825
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2826 return GTK_WIDGET(ret);
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2827 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2828
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2829 const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2830 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2831 return gtk_entry_get_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((widget)))));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2832 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2833
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2834 void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text)
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2835 {
32394
f883709bdba4 compiles using GTK+ 3 from git, beware it does not yet run, in fact it crashes...
Marcus Lundblad <malu@pidgin.im>
parents: 32391
diff changeset
2836 gtk_entry_set_text(GTK_ENTRY(gtk_bin_get_child(GTK_BIN((widget)))), (text));
20036
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2837 }
3bdbea94ad0c Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 19859
diff changeset
2838
22131
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2839 GtkWidget *
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2840 pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label)
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2841 {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2842 GtkWidget *hbox;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2843 GtkWidget *label = NULL;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2844
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2845 if (widget_label) {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2846 hbox = gtk_hbox_new(FALSE, 5);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2847 gtk_widget_show(hbox);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2848 gtk_box_pack_start(vbox, hbox, FALSE, FALSE, 0);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2849
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2850 label = gtk_label_new_with_mnemonic(widget_label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2851 gtk_widget_show(label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2852 if (sg) {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2853 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2854 gtk_size_group_add_widget(sg, label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2855 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2856 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2857 } else {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2858 hbox = GTK_WIDGET(vbox);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2859 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2860
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2861 gtk_widget_show(widget);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2862 gtk_box_pack_start(GTK_BOX(hbox), widget, expand, TRUE, 0);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2863 if (label) {
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2864 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2865 pidgin_set_accessible_label (widget, label);
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2866 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2867
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2868 if (p_label)
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2869 (*p_label) = label;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2870 return hbox;
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2871 }
12b395dc8c59 Remove a lot of duplication from a lot of places. Closes #4558.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22013
diff changeset
2872
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2873 gboolean pidgin_auto_parent_window(GtkWidget *widget)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2874 {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2875 #if 0
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2876 /* This looks at the most recent window that received focus, and makes
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2877 * that the parent window. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2878 #ifndef _WIN32
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2879 static GdkAtom _WindowTime = GDK_NONE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2880 static GdkAtom _Cardinal = GDK_NONE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2881 GList *windows = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2882 GtkWidget *parent = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2883 time_t window_time = 0;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2884
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2885 windows = gtk_window_list_toplevels();
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2886
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2887 if (_WindowTime == GDK_NONE) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2888 _WindowTime = gdk_x11_xatom_to_atom(gdk_x11_get_xatom_by_name("_NET_WM_USER_TIME"));
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2889 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2890 if (_Cardinal == GDK_NONE) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2891 _Cardinal = gdk_atom_intern("CARDINAL", FALSE);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2892 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2893
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2894 while (windows) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2895 GtkWidget *window = windows->data;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2896 guchar *data = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2897 int al = 0;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2898 time_t value;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2899
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2900 windows = g_list_delete_link(windows, windows);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2901
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2902 if (window == widget ||
32913
af2c726febce Fix all deprecated GTK_WIDGET_* macros.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32900
diff changeset
2903 !gtk_widget_get_visible(window))
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2904 continue;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2905
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2906 if (!gdk_property_get(window->window, _WindowTime, _Cardinal, 0, sizeof(time_t), FALSE,
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2907 NULL, NULL, &al, &data))
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2908 continue;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2909 value = *(time_t *)data;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2910 if (window_time < value) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2911 window_time = value;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2912 parent = window;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2913 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2914 g_free(data);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2915 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2916 if (windows)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2917 g_list_free(windows);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2918 if (parent) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2919 if (!gtk_get_current_event() && gtk_window_has_toplevel_focus(GTK_WINDOW(parent))) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2920 /* The window is in focus, and the new window was not triggered by a keypress/click
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2921 * event. So do not set it transient, to avoid focus stealing and all that.
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2922 */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2923 return FALSE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2924 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2925 gtk_window_set_transient_for(GTK_WINDOW(widget), GTK_WINDOW(parent));
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2926 return TRUE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2927 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2928 return FALSE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2929 #endif
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2930 #else
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2931 /* This finds the currently active window and makes that the parent window. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2932 GList *windows = NULL;
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2933 GtkWindow *parent = NULL;
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2934 GdkEvent *event = gtk_get_current_event();
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2935 GdkWindow *menu = NULL;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2936
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2937 if (event == NULL)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2938 /* The window was not triggered by a user action. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2939 return FALSE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2940
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2941 /* We need to special case events from a popup menu. */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2942 if (event->type == GDK_BUTTON_RELEASE) {
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2943 /* XXX: Neither of the following works:
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2944 menu = event->button.window;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2945 menu = gdk_window_get_parent(event->button.window);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2946 menu = gdk_window_get_toplevel(event->button.window);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2947 */
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2948 } else if (event->type == GDK_KEY_PRESS)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2949 menu = event->key.window;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2950
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2951 windows = gtk_window_list_toplevels();
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2952 while (windows) {
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2953 GtkWindow *window = GTK_WINDOW(windows->data);
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2954 windows = g_list_delete_link(windows, windows);
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2955
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2956 if (GTK_WIDGET(window) == widget ||
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2957 !gtk_widget_get_visible(GTK_WIDGET(window))) {
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2958 continue;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2959 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2960
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2961 if (gtk_window_has_toplevel_focus(window) ||
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2962 (menu && menu == gtk_widget_get_window(GTK_WIDGET(window)))) {
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2963 parent = window;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2964 break;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2965 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2966 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2967 if (windows)
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2968 g_list_free(windows);
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2969 if (GPOINTER_TO_INT(g_object_get_data(G_OBJECT(parent),
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2970 "pidgin-window-is-closing")))
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2971 {
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2972 parent = gtk_window_get_transient_for(parent);
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2973 }
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2974 if (parent) {
34345
be0d28873c0b Pidgin: don't parent on windows being destroyed
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34338
diff changeset
2975 gtk_window_set_transient_for(GTK_WINDOW(widget), parent);
22007
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2976 return TRUE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2977 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2978 return FALSE;
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2979 #endif
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2980 }
386062b58867 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22005
diff changeset
2981
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2982 static GObject *pidgin_pixbuf_from_data_helper(const guchar *buf, gsize count, gboolean animated)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2983 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2984 GObject *pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2985 GdkPixbufLoader *loader;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2986 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2987
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2988 loader = gdk_pixbuf_loader_new();
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2989
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2990 if (!gdk_pixbuf_loader_write(loader, buf, count, &error) || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2991 purple_debug_warning("gtkutils", "gdk_pixbuf_loader_write() "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
2992 "failed with size=%" G_GSIZE_FORMAT ": %s\n", count,
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2993 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2994 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2995 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2996 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2997 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2998 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
2999
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3000 if (!gdk_pixbuf_loader_close(loader, &error) || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3001 purple_debug_warning("gtkutils", "gdk_pixbuf_loader_close() "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
3002 "failed for image of size %" G_GSIZE_FORMAT ": %s\n", count,
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3003 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3004 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3005 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3006 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3007 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3008 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3009
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3010 if (animated)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3011 pixbuf = G_OBJECT(gdk_pixbuf_loader_get_animation(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3012 else
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3013 pixbuf = G_OBJECT(gdk_pixbuf_loader_get_pixbuf(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3014 if (!pixbuf) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3015 purple_debug_warning("gtkutils", "%s() returned NULL for image "
32749
a152b1950ea6 Use correct format for printing gsize types.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32709
diff changeset
3016 "of size %" G_GSIZE_FORMAT "\n",
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3017 animated ? "gdk_pixbuf_loader_get_animation"
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3018 : "gdk_pixbuf_loader_get_pixbuf", count);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3019 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3020 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3021 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3022
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3023 g_object_ref(pixbuf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3024 g_object_unref(G_OBJECT(loader));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3025
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3026 return pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3027 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3028
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3029 GdkPixbuf *pidgin_pixbuf_from_data(const guchar *buf, gsize count)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3030 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3031 return GDK_PIXBUF(pidgin_pixbuf_from_data_helper(buf, count, FALSE));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3032 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3033
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3034 GdkPixbufAnimation *pidgin_pixbuf_anim_from_data(const guchar *buf, gsize count)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3035 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3036 return GDK_PIXBUF_ANIMATION(pidgin_pixbuf_from_data_helper(buf, count, TRUE));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3037 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3038
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3039 GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleStoredImage *image)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3040 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3041 return pidgin_pixbuf_from_data(purple_imgstore_get_data(image),
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3042 purple_imgstore_get_size(image));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3043 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3044
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3045 GdkPixbuf *pidgin_pixbuf_new_from_file(const gchar *filename)
22897
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
3046 {
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
3047 GdkPixbuf *pixbuf;
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3048 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3049
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3050 pixbuf = gdk_pixbuf_new_from_file(filename, &error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3051 if (!pixbuf || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3052 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3053 "returned %s for file %s: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3054 pixbuf ? "something" : "nothing",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3055 filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3056 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3057 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3058 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3059 if (pixbuf)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3060 g_object_unref(G_OBJECT(pixbuf));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3061 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3062 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3063
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3064 return pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3065 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3066
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3067 GdkPixbuf *pidgin_pixbuf_new_from_file_at_size(const char *filename, int width, int height)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3068 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3069 GdkPixbuf *pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3070 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3071
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3072 pixbuf = gdk_pixbuf_new_from_file_at_size(filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3073 width, height, &error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3074 if (!pixbuf || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3075 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file_at_size() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3076 "returned %s for file %s: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3077 pixbuf ? "something" : "nothing",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3078 filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3079 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3080 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3081 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3082 if (pixbuf)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3083 g_object_unref(G_OBJECT(pixbuf));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3084 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3085 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3086
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3087 return pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3088 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3089
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3090 GdkPixbuf *pidgin_pixbuf_new_from_file_at_scale(const char *filename, int width, int height, gboolean preserve_aspect_ratio)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3091 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3092 GdkPixbuf *pixbuf;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3093 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3094
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3095 pixbuf = gdk_pixbuf_new_from_file_at_scale(filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3096 width, height, preserve_aspect_ratio, &error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3097 if (!pixbuf || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3098 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file_at_scale() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3099 "returned %s for file %s: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3100 pixbuf ? "something" : "nothing",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3101 filename,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3102 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3103 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3104 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3105 if (pixbuf)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3106 g_object_unref(G_OBJECT(pixbuf));
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3107 return NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3108 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31565
diff changeset
3109
22897
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
3110 return pixbuf;
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
3111 }
93d7ad160755 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22895
diff changeset
3112
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3113 static void
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3114 url_copy(GtkWidget *w, gchar *url)
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3115 {
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3116 GtkClipboard *clipboard;
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3117
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3118 clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3119 gtk_clipboard_set_text(clipboard, url, -1);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3120
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3121 clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3122 gtk_clipboard_set_text(clipboard, url, -1);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3123 }
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3124
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3125 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3126 link_context_menu(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3127 {
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3128 GtkWidget *img, *item;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3129 char *url;
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3130
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3131 url = webkit_dom_html_anchor_element_get_href(link);
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3132
24992
4183206e4423 Fix a comment
Richard Laager <rlaager@pidgin.im>
parents: 24698
diff changeset
3133 /* Open Link */
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3134 img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3135 item = gtk_image_menu_item_new_with_mnemonic(_("_Open Link"));
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3136 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3137 g_signal_connect_swapped(G_OBJECT(item), "activate",
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3138 G_CALLBACK(gtk_webview_activate_anchor), link);
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3139 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3140
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3141 /* Copy Link Location */
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3142 img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3143 item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Link Location"));
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3144 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3145 /* The signal owns url now: */
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3146 g_signal_connect_data(G_OBJECT(item), "activate", G_CALLBACK(url_copy),
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3147 (gpointer)url, (GClosureNotify)g_free, 0);
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3148 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3149
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3150 return TRUE;
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3151 }
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3152
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3153 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3154 copy_email_address(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3155 {
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3156 GtkWidget *img, *item;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3157 char *text;
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3158 char *address;
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3159 #define MAILTOSIZE (sizeof("mailto:") - 1)
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3160
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3161 text = webkit_dom_html_anchor_element_get_href(link);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3162 if (!text || strlen(text) <= MAILTOSIZE) {
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3163 g_free(text);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3164 return FALSE;
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3165 }
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3166 address = text + MAILTOSIZE;
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3167
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3168 /* Copy Email Address */
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3169 img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3170 item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Email Address"));
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3171 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3172 g_signal_connect_data(G_OBJECT(item), "activate", G_CALLBACK(url_copy),
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3173 g_strdup(address), (GClosureNotify)g_free, 0);
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3174 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3175
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3176 g_free(text);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3177
24698
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3178 return TRUE;
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3179 }
f9dd7117ade0 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24674
diff changeset
3180
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3181 static void
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3182 file_open_uri(GtkWebView *webview, const char *uri)
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3183 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3184 /* Copied from gtkft.c:open_button_cb */
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3185 #ifdef _WIN32
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3186 /* If using Win32... */
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3187 int code;
32036
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3188 if (purple_str_has_prefix(uri, "file://"))
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3189 {
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3190 gchar *escaped = g_shell_quote(uri);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3191 gchar *param = g_strconcat("/select,\"", uri, "\"", NULL);
32043
73c3b1db2364 Fix parameter types passed to ShellExecuteW(). One of these is just a warning
Daniel Atallah <datallah@pidgin.im>
parents: 32036
diff changeset
3192 wchar_t *wc_param = g_utf8_to_utf16(param, -1, NULL, NULL, NULL);
73c3b1db2364 Fix parameter types passed to ShellExecuteW(). One of these is just a warning
Daniel Atallah <datallah@pidgin.im>
parents: 32036
diff changeset
3193
73c3b1db2364 Fix parameter types passed to ShellExecuteW(). One of these is just a warning
Daniel Atallah <datallah@pidgin.im>
parents: 32036
diff changeset
3194 code = (int)ShellExecuteW(NULL, L"OPEN", L"explorer.exe", wc_param, NULL, SW_NORMAL);
32036
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3195
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3196 g_free(wc_param);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3197 g_free(param);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3198 g_free(escaped);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3199 } else {
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3200 wchar_t *wc_filename = g_utf8_to_utf16(
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3201 uri, -1, NULL, NULL, NULL);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3202
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3203 code = (int)ShellExecuteW(NULL, NULL, wc_filename, NULL, NULL,
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3204 SW_SHOW);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3205
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3206 g_free(wc_filename);
4377067bda01 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <markdoliner@pidgin.im>
parents: 31889
diff changeset
3207 }
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3208
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3209 if (code == SE_ERR_ASSOCINCOMPLETE || code == SE_ERR_NOASSOC)
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3210 {
33269
1ea2edfac5e9 Convert some more util stuff to a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33232
diff changeset
3211 purple_notify_error(webview, NULL,
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3212 _("There is no application configured to open this type of file."), NULL);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3213 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3214 else if (code < 32)
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3215 {
33269
1ea2edfac5e9 Convert some more util stuff to a webview.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33232
diff changeset
3216 purple_notify_error(webview, NULL,
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3217 _("An error occurred while opening the file."), NULL);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3218 purple_debug_warning("gtkutils", "filename: %s; code: %d\n", uri, code);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3219 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3220 #else
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3221 char *command = NULL;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3222 char *tmp = NULL;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3223 GError *error = NULL;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3224
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3225 if (purple_running_gnome())
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3226 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3227 char *escaped = g_shell_quote(uri);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3228 command = g_strdup_printf("gnome-open %s", escaped);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3229 g_free(escaped);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3230 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3231 else if (purple_running_kde())
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3232 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3233 char *escaped = g_shell_quote(uri);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3234
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3235 if (purple_str_has_suffix(uri, ".desktop"))
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3236 command = g_strdup_printf("kfmclient openURL %s 'text/plain'", escaped);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3237 else
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3238 command = g_strdup_printf("kfmclient openURL %s", escaped);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3239 g_free(escaped);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3240 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3241 else
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3242 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3243 purple_notify_uri(NULL, uri);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3244 return;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3245 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3246
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3247 if (purple_program_is_valid(command))
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3248 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3249 gint exit_status;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3250 if (!g_spawn_command_line_sync(command, NULL, NULL, &exit_status, &error))
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3251 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3252 tmp = g_strdup_printf(_("Error launching %s: %s"),
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3253 uri, error->message);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3254 purple_notify_error(webview, NULL, _("Unable to open file."), tmp);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3255 g_free(tmp);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3256 g_error_free(error);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3257 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3258 if (exit_status != 0)
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3259 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3260 char *primary = g_strdup_printf(_("Error running %s"), command);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3261 char *secondary = g_strdup_printf(_("Process returned error code %d"),
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3262 exit_status);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3263 purple_notify_error(webview, NULL, primary, secondary);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3264 g_free(tmp);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3265 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3266 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3267 #endif
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3268 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3269
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3270 #define FILELINKSIZE (sizeof("file://") - 1)
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3271 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3272 file_clicked_cb(GtkWebView *webview, const char *uri)
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3273 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3274 file_open_uri(webview, uri + FILELINKSIZE);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3275 return TRUE;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3276 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3277
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3278 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3279 open_containing_cb(GtkWebView *webview, const char *uri)
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3280 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3281 char *dir = g_path_get_dirname(uri + FILELINKSIZE);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3282 file_open_uri(webview, dir);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3283 g_free(dir);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3284 return TRUE;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3285 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3286
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3287 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3288 file_context_menu(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3289 {
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3290 GtkWidget *img, *item;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3291 char *url;
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3292
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3293 url = webkit_dom_html_anchor_element_get_href(link);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3294
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3295 /* Open File */
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3296 img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3297 item = gtk_image_menu_item_new_with_mnemonic(_("_Open File"));
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3298 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3299 g_signal_connect_swapped(G_OBJECT(item), "activate",
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3300 G_CALLBACK(gtk_webview_activate_anchor), link);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3301 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3302
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3303 /* Open Containing Directory */
27676
a1991c15288f Set the "Open Containing Directory" icon to the "directory" stock icon
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27656
diff changeset
3304 img = gtk_image_new_from_stock(GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3305 item = gtk_image_menu_item_new_with_mnemonic(_("Open _Containing Directory"));
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3306 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3307 /* The signal owns url now: */
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3308 g_signal_connect_data(G_OBJECT(item), "activate",
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3309 G_CALLBACK(open_containing_cb), (gpointer)url,
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3310 (GClosureNotify)g_free, 0);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3311 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3312
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3313 return TRUE;
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3314 }
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3315
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3316 #define AUDIOLINKSIZE (sizeof("audio://") - 1)
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3317 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3318 audio_clicked_cb(GtkWebView *webview, const char *uri)
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3319 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3320 PidginConversation *conv = g_object_get_data(G_OBJECT(webview), "gtkconv");
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3321 if (!conv) /* no playback in debug window */
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3322 return TRUE;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3323 purple_sound_play_file(uri + AUDIOLINKSIZE, NULL);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3324 return TRUE;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3325 }
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3326
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3327 static void
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3328 savefile_write_cb(gpointer user_data, char *file)
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3329 {
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3330 char *temp_file = user_data;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3331 gchar *contents;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3332 gsize length;
28470
37b23d2e9484 GError needs to be initialized to NULL. I can't help but think that this
Mark Doliner <markdoliner@pidgin.im>
parents: 28458
diff changeset
3333 GError *error = NULL;
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3334
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3335 if (!g_file_get_contents(temp_file, &contents, &length, &error)) {
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3336 purple_debug_error("gtkutils", "Unable to read contents of %s: %s\n",
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3337 temp_file, error->message);
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3338 g_error_free(error);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3339 g_free(temp_file);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3340 return;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3341 }
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3342 g_free(temp_file);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3343
27820
dbce81931c2b Use purple_util_write_data_to_file_absolute. Closes #9688.
Paul Aurich <darkrain42@pidgin.im>
parents: 27695
diff changeset
3344 if (!purple_util_write_data_to_file_absolute(file, contents, length)) {
dbce81931c2b Use purple_util_write_data_to_file_absolute. Closes #9688.
Paul Aurich <darkrain42@pidgin.im>
parents: 27695
diff changeset
3345 purple_debug_error("gtkutils", "Unable to write contents to %s\n",
dbce81931c2b Use purple_util_write_data_to_file_absolute. Closes #9688.
Paul Aurich <darkrain42@pidgin.im>
parents: 27695
diff changeset
3346 file);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3347 }
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3348 }
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3349
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3350 static gboolean
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3351 save_file_cb(GtkWidget *item, const char *url)
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3352 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3353 PidginConversation *gtkconv = g_object_get_data(G_OBJECT(item), "gtkconv");
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3354 PurpleConversation *conv;
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3355 if (!gtkconv)
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3356 return TRUE;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3357 conv = gtkconv->active_conv;
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3358 purple_request_file(conv, _("Save File"), NULL, TRUE,
34333
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
3359 G_CALLBACK(savefile_write_cb), G_CALLBACK(g_free),
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
3360 purple_request_cpar_from_conversation(conv),
b92698241603 Request API refactoring: switch purple_request_file to PurpleRequestCommonParameters
Tomasz Wasilczyk <twasilczyk@pidgin.im>
parents: 34331
diff changeset
3361 (gpointer)g_strdup(url));
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3362 return TRUE;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3363 }
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3364
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3365 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3366 audio_context_menu(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3367 {
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3368 GtkWidget *img, *item;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3369 char *url;
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3370 PidginConversation *conv = g_object_get_data(G_OBJECT(webview), "gtkconv");
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3371 if (!conv) /* No menu in debug window */
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3372 return TRUE;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3373
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3374 url = webkit_dom_html_anchor_element_get_href(link);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3375
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3376 /* Play Sound */
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3377 img = gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_MENU);
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3378 item = gtk_image_menu_item_new_with_mnemonic(_("_Play Sound"));
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3379 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3380 g_signal_connect_swapped(G_OBJECT(item), "activate",
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3381 G_CALLBACK(gtk_webview_activate_anchor), link);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3382 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3383
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3384 /* Save File */
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3385 img = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU);
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3386 item = gtk_image_menu_item_new_with_mnemonic(_("_Save File"));
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3387 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3388 g_signal_connect_data(G_OBJECT(item), "activate",
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3389 G_CALLBACK(save_file_cb), g_strdup(url+AUDIOLINKSIZE),
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3390 (GClosureNotify)g_free, 0);
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3391 g_object_set_data(G_OBJECT(item), "gtkconv", conv);
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3392 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3393
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3394 g_free(url);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3395
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3396 return TRUE;
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3397 }
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3398
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3399 /* XXX: The following two functions are for demonstration purposes only! */
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3400 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3401 open_dialog(GtkWebView *webview, const char *url)
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3402 {
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3403 const char *str;
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3404
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3405 if (!url || strlen(url) < sizeof("open://")) {
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3406 return FALSE;
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3407 }
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3408
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3409 str = url + sizeof("open://") - 1;
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3410
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3411 if (strcmp(str, "accounts") == 0)
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3412 pidgin_accounts_window_show();
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3413 else if (strcmp(str, "prefs") == 0)
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3414 pidgin_prefs_show();
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3415 else
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3416 return FALSE;
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3417 return TRUE;
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3418 }
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3419
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3420 static gboolean
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3421 dummy(GtkWebView *webview, WebKitDOMHTMLAnchorElement *link, GtkWidget *menu)
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3422 {
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3423 return TRUE;
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3424 }
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3425
25007
ef8bc1f4a6ba Pass only the URL scheme to gtkimhtml and let it add the colon automatically.
Richard Laager <rlaager@pidgin.im>
parents: 24998
diff changeset
3426 static gboolean
25012
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3427 register_gnome_url_handlers(void)
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3428 {
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3429 char *tmp;
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3430 char *err;
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3431 char *c;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3432 char *start;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3433
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3434 tmp = g_find_program_in_path("gconftool-2");
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3435 if (tmp == NULL)
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3436 return FALSE;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3437
26599
191be70922b2 Apply Paul's second patch to fix some memory leaks found in valgrind.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26572
diff changeset
3438 g_free(tmp);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3439 tmp = NULL;
26599
191be70922b2 Apply Paul's second patch to fix some memory leaks found in valgrind.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26572
diff changeset
3440
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3441 if (!g_spawn_command_line_sync("gconftool-2 --all-dirs /desktop/gnome/url-handlers",
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3442 &tmp, &err, NULL, NULL))
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3443 {
25012
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3444 g_free(tmp);
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3445 g_free(err);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3446 g_return_val_if_reached(FALSE);
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3447 }
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3448 g_free(err);
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3449 err = NULL;
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3450
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3451 for (c = start = tmp ; *c ; c++)
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3452 {
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3453 /* Skip leading spaces. */
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3454 if (c == start && *c == ' ')
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3455 start = c + 1;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3456 else if (*c == '\n')
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3457 {
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3458 *c = '\0';
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3459 if (g_str_has_prefix(start, "/desktop/gnome/url-handlers/"))
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3460 {
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3461 char *cmd;
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3462 char *tmp2 = NULL;
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3463 char *protocol;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3464
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3465 /* If there is an enabled boolean, honor it. */
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3466 cmd = g_strdup_printf("gconftool-2 -g %s/enabled", start);
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3467 if (g_spawn_command_line_sync(cmd, &tmp2, &err, NULL, NULL))
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3468 {
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3469 g_free(err);
25012
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3470 err = NULL;
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3471 if (!strcmp(tmp2, "false\n"))
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3472 {
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3473 g_free(tmp2);
25012
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3474 g_free(cmd);
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3475 start = c + 1;
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3476 continue;
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3477 }
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3478 }
25012
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3479 g_free(cmd);
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3480 g_free(tmp2);
24998
12caddc17a20 Finish up the GNOME URL handler code:
Richard Laager <rlaager@pidgin.im>
parents: 24997
diff changeset
3481
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3482 start += sizeof("/desktop/gnome/url-handlers/") - 1;
25009
2a52153c3e86 In the GNOME URL registration, ftp, gopher, http, and https are now
Richard Laager <rlaager@pidgin.im>
parents: 25008
diff changeset
3483
25015
b748dd8a5633 Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@pidgin.im>
parents: 25012
diff changeset
3484 protocol = g_strdup_printf("%s:", start);
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3485 registered_url_handlers = g_slist_prepend(registered_url_handlers, protocol);
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3486 gtk_webview_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3487 }
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3488 start = c + 1;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3489 }
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3490 }
25012
7a6cb07f2366 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 25009
diff changeset
3491 g_free(tmp);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3492
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3493 return (registered_url_handlers != NULL);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3494 }
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3495
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3496 #ifdef _WIN32
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3497 static void
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3498 winpidgin_register_win32_url_handlers(void)
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3499 {
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3500 int idx = 0;
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3501 LONG ret = ERROR_SUCCESS;
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3502
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3503 do {
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3504 DWORD nameSize = 256;
29629
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3505 wchar_t start[256];
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3506 ret = RegEnumKeyExW(HKEY_CLASSES_ROOT, idx++, start, &nameSize,
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3507 NULL, NULL, NULL, NULL);
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3508 if (ret == ERROR_SUCCESS) {
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3509 HKEY reg_key = NULL;
29629
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3510 ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, start, 0, KEY_READ, &reg_key);
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3511 if (ret == ERROR_SUCCESS) {
29629
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3512 ret = RegQueryValueExW(reg_key, L"URL Protocol", NULL, NULL, NULL, NULL);
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3513 if (ret == ERROR_SUCCESS) {
29629
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3514 gchar *utf8 = g_utf16_to_utf8(start, -1, NULL, NULL, NULL);
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3515 gchar *protocol = g_strdup_printf("%s:", utf8);
585cdb37b3c8 Handle non-ASCII protocol names on Win32
Daniel Atallah <datallah@pidgin.im>
parents: 29627
diff changeset
3516 g_free(utf8);
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3517 registered_url_handlers = g_slist_prepend(registered_url_handlers, protocol);
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3518 /* We still pass everything to the "http" "open" handler for security reasons */
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3519 gtk_webview_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3520 }
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3521 RegCloseKey(reg_key);
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3522 }
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3523 ret = ERROR_SUCCESS;
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3524 }
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3525 } while (ret == ERROR_SUCCESS);
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3526
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3527 if (ret != ERROR_NO_MORE_ITEMS)
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3528 purple_debug_error("winpidgin", "Error iterating HKEY_CLASSES_ROOT subkeys: %ld\n",
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3529 ret);
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3530 }
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3531 #endif
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3532
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: 31217
diff changeset
3533 GtkWidget *
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: 31217
diff changeset
3534 pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height)
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: 31217
diff changeset
3535 {
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: 31217
diff changeset
3536 GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
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: 31217
diff changeset
3537
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: 31217
diff changeset
3538 if (G_LIKELY(sw)) {
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: 31217
diff changeset
3539 gtk_widget_show(sw);
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: 31217
diff changeset
3540 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), hscrollbar_policy, vscrollbar_policy);
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: 31217
diff changeset
3541 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), shadow_type);
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: 31217
diff changeset
3542 if (width != -1 || height != -1)
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: 31217
diff changeset
3543 gtk_widget_set_size_request(sw, width, height);
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: 31217
diff changeset
3544 if (child) {
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
3545 #if GTK_CHECK_VERSION(3,0,0)
32425
24aa67208304 Fix some changes for the scrollable stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32424
diff changeset
3546 if (GTK_IS_SCROLLABLE(child))
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
3547 #else
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: 31217
diff changeset
3548 if (GTK_WIDGET_GET_CLASS(child)->set_scroll_adjustments_signal)
33170
ce4447562d64 Add checks for old GTK+2 stuff.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33149
diff changeset
3549 #endif
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: 31217
diff changeset
3550 gtk_container_add(GTK_CONTAINER(sw), child);
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: 31217
diff changeset
3551 else
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: 31217
diff changeset
3552 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), child);
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: 31217
diff changeset
3553 }
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: 31217
diff changeset
3554 return sw;
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: 31217
diff changeset
3555 }
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: 31217
diff changeset
3556
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: 31217
diff changeset
3557 return child;
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: 31217
diff changeset
3558 }
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: 31217
diff changeset
3559
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3560 void pidgin_utils_init(void)
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3561 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3562 gtk_webview_class_register_protocol("http://", url_clicked_cb, link_context_menu);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3563 gtk_webview_class_register_protocol("https://", url_clicked_cb, link_context_menu);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3564 gtk_webview_class_register_protocol("ftp://", url_clicked_cb, link_context_menu);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3565 gtk_webview_class_register_protocol("gopher://", url_clicked_cb, link_context_menu);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3566 gtk_webview_class_register_protocol("mailto:", url_clicked_cb, copy_email_address);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3567
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3568 gtk_webview_class_register_protocol("file://", file_clicked_cb, file_context_menu);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3569 gtk_webview_class_register_protocol("audio://", audio_clicked_cb, audio_context_menu);
27656
0eaa3f40d459 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27525
diff changeset
3570
25015
b748dd8a5633 Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@pidgin.im>
parents: 25012
diff changeset
3571 /* Example custom URL handler. */
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3572 gtk_webview_class_register_protocol("open://", open_dialog, dummy);
25015
b748dd8a5633 Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@pidgin.im>
parents: 25012
diff changeset
3573
b748dd8a5633 Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@pidgin.im>
parents: 25012
diff changeset
3574 /* If we're under GNOME, try registering the system URL handlers. */
b748dd8a5633 Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@pidgin.im>
parents: 25012
diff changeset
3575 if (purple_running_gnome())
b748dd8a5633 Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@pidgin.im>
parents: 25012
diff changeset
3576 register_gnome_url_handlers();
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3577
29898
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3578 /* Used to make small buttons */
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3579 gtk_rc_parse_string("style \"pidgin-small-close-button\"\n"
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3580 "{\n"
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3581 "GtkWidget::focus-padding = 0\n"
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3582 "GtkWidget::focus-line-width = 0\n"
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3583 "xthickness = 0\n"
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3584 "ythickness = 0\n"
30002
cab5e4b11ed2 Use cute little "×" on the close buttons in conversation tabs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29931
diff changeset
3585 "GtkContainer::border-width = 0\n"
cab5e4b11ed2 Use cute little "×" on the close buttons in conversation tabs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29931
diff changeset
3586 "GtkButton::inner-border = {0, 0, 0, 0}\n"
cab5e4b11ed2 Use cute little "×" on the close buttons in conversation tabs.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29931
diff changeset
3587 "GtkButton::default-border = {0, 0, 0, 0}\n"
29898
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3588 "}\n"
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3589 "widget \"*.pidgin-small-close-button\" style \"pidgin-small-close-button\"");
c883238ac60f Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29896
diff changeset
3590
28673
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3591 #ifdef _WIN32
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3592 winpidgin_register_win32_url_handlers();
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3593 #endif
f6f0113c1a6c Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <datallah@pidgin.im>
parents: 28474
diff changeset
3594
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3595 }
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3596
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3597 void pidgin_utils_uninit(void)
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3598 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3599 gtk_webview_class_register_protocol("open://", NULL, NULL);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3600
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3601 /* If we have GNOME handlers registered, unregister them. */
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3602 if (registered_url_handlers)
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3603 {
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3604 GSList *l;
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3605 for (l = registered_url_handlers; l; l = l->next)
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3606 {
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3607 gtk_webview_class_register_protocol((char *)l->data, NULL, NULL);
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3608 g_free(l->data);
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3609 }
28711
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3610 g_slist_free(registered_url_handlers);
cd5b5427ae6f Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <datallah@pidgin.im>
parents: 28673
diff changeset
3611 registered_url_handlers = NULL;
24997
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3612 return;
de02784645a2 First round of GNOME URL handler support.
Richard Laager <rlaager@pidgin.im>
parents: 24992
diff changeset
3613 }
27695
c56aeb9f715a Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27676
diff changeset
3614
33232
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3615 gtk_webview_class_register_protocol("audio://", NULL, NULL);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3616 gtk_webview_class_register_protocol("file://", NULL, NULL);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3617
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3618 gtk_webview_class_register_protocol("http://", NULL, NULL);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3619 gtk_webview_class_register_protocol("https://", NULL, NULL);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3620 gtk_webview_class_register_protocol("ftp://", NULL, NULL);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3621 gtk_webview_class_register_protocol("mailto:", NULL, NULL);
a572083f80ef Register protocols with GtkWebView.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 33170
diff changeset
3622 gtk_webview_class_register_protocol("gopher://", NULL, NULL);
24674
36bf974a7d78 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24672
diff changeset
3623 }

mercurial