annotate pidgin/gtkutils.c @ 32593:7b1a94adc33f

WebKit is only required when building Pidgin.
author Elliott Sales de Andrade <qulogic@pidgin.im>
date Thu, 08 Sep 2011 05:13:53 +0000
parents 3b2ceeb8883b
children d9cb56d33839
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1 /**
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2 * @file gtkutils.c GTK+ utility functions
16193
247e421c4fa6 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@wiktel.com>
parents: 16062
diff changeset
3 * @ingroup pidgin
20074
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 20028
diff changeset
4 */
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 20028
diff changeset
5
6bf32c9e15a7 remove gpl boilerplate from doxygen docs
Sean Egan <seanegan@gmail.com>
parents: 20028
diff changeset
6 /* pidgin
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
7 *
15871
66dff3dfdea6 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@wiktel.com>
parents: 15823
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
10 * source distribution.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
11 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
15 * (at your option) any later version.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
16 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
20 * GNU General Public License for more details.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
21 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19680
44b4e8bd759b The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19367
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
25 */
24292
8282911d5e17 Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@wiktel.com>
parents: 23360
diff changeset
26 #define _PIDGIN_GTKUTILS_C_
8282911d5e17 Build everything with the *_DISABLE_DEPRECATED flags set. This allows us
Richard Laager <rlaager@wiktel.com>
parents: 23360
diff changeset
27
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
28 #include "internal.h"
15514
535f002e7b0f More pidgin changes
Sean Egan <seanegan@gmail.com>
parents: 15507
diff changeset
29 #include "pidgin.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
30
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
31 #ifndef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
32 # include <X11/Xlib.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
33 #else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
34 # ifdef small
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
35 # undef small
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
36 # endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
37 #endif /*_WIN32*/
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
38
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
39 #ifdef USE_GTKSPELL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
40 # include <gtkspell/gtkspell.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
41 # ifdef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
42 # include "wspell.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
43 # endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
44 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
45
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
46 #include <gdk/gdkkeysyms.h>
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
47
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
48 #include "conversation.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
49 #include "debug.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
50 #include "desktopitem.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
51 #include "imgstore.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
52 #include "notify.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
53 #include "prefs.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
54 #include "prpl.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
55 #include "request.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
56 #include "signals.h"
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
57 #include "sound.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
58 #include "util.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
59
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
60 #include "gtkaccount.h"
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
61 #include "gtkprefs.h"
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
62
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
63 #include "gtkconv.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
64 #include "gtkdialogs.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
65 #include "gtkimhtml.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
66 #include "gtkimhtmltoolbar.h"
15822
84b0f9b23ede According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@gmail.com>
parents: 15821
diff changeset
67 #include "pidginstock.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
68 #include "gtkthemes.h"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
69 #include "gtkutils.h"
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
70 #include "pidgin/minidialog.h"
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
71
17133
f93dcfab772d Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17132
diff changeset
72 typedef struct {
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
73 GtkWidget *menu;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
74 gint default_item;
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
75 } AopMenu;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
76
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
77 static guint accels_save_timer = 0;
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
78 static GSList *registered_url_handlers = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
79
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
80 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
81 url_clicked_idle_cb(gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
82 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
83 purple_notify_uri(NULL, data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
84 g_free(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
85 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
86 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
87
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
88 static gboolean
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
89 url_clicked_cb(GtkIMHtml *unused, GtkIMHtmlLink *link)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
90 {
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
91 const char *uri = gtk_imhtml_link_get_url(link);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
92 g_idle_add(url_clicked_idle_cb, g_strdup(uri));
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
93 return TRUE;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
94 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
95
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
96 static GtkIMHtmlFuncs gtkimhtml_cbs = {
16375
391a79778f89 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@wiktel.com>
parents: 16255
diff changeset
97 (GtkIMHtmlGetImageFunc)purple_imgstore_find_by_id,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
98 (GtkIMHtmlGetImageDataFunc)purple_imgstore_get_data,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
99 (GtkIMHtmlGetImageSizeFunc)purple_imgstore_get_size,
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
100 (GtkIMHtmlGetImageFilenameFunc)purple_imgstore_get_filename,
16375
391a79778f89 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@wiktel.com>
parents: 16255
diff changeset
101 purple_imgstore_ref_by_id,
391a79778f89 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@wiktel.com>
parents: 16255
diff changeset
102 purple_imgstore_unref_by_id,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
103 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
104
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
105 void
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
106 pidgin_setup_imhtml(GtkWidget *imhtml)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
107 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
108 g_return_if_fail(imhtml != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
109 g_return_if_fail(GTK_IS_IMHTML(imhtml));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
110
16202
0973688f4b74 Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@wiktel.com>
parents: 16193
diff changeset
111 pidgin_themes_smiley_themeize(imhtml);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
112
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
113 gtk_imhtml_set_funcs(GTK_IMHTML(imhtml), &gtkimhtml_cbs);
15445
154b8d8643a2 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@gmail.com>
parents: 15436
diff changeset
114
28960
b027d1d97edb I *think* this properly adds back the font preference stuff I axed earlier, but
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28937
diff changeset
115 #ifdef _WIN32
17489
747e5fd970e6 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@gmail.com>
parents: 17410
diff changeset
116 if (!purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/use_theme_font")) {
29430
f6cc97902049 Make the conversation text preview section dynamically update as the win32-only font override changes. Fixes #11168
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29313
diff changeset
117 PangoFontDescription *desc;
17489
747e5fd970e6 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@gmail.com>
parents: 17410
diff changeset
118 const char *font = purple_prefs_get_string(PIDGIN_PREFS_ROOT "/conversations/custom_font");
747e5fd970e6 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@gmail.com>
parents: 17410
diff changeset
119 desc = pango_font_description_from_string(font);
29430
f6cc97902049 Make the conversation text preview section dynamically update as the win32-only font override changes. Fixes #11168
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29313
diff changeset
120 if (desc) {
f6cc97902049 Make the conversation text preview section dynamically update as the win32-only font override changes. Fixes #11168
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29313
diff changeset
121 gtk_widget_modify_font(imhtml, desc);
f6cc97902049 Make the conversation text preview section dynamically update as the win32-only font override changes. Fixes #11168
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29313
diff changeset
122 pango_font_description_free(desc);
f6cc97902049 Make the conversation text preview section dynamically update as the win32-only font override changes. Fixes #11168
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29313
diff changeset
123 }
17489
747e5fd970e6 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@gmail.com>
parents: 17410
diff changeset
124 }
28960
b027d1d97edb I *think* this properly adds back the font preference stuff I axed earlier, but
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28937
diff changeset
125 #endif
20805
e0ce7124d2d4 Fix CID 353
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20660
diff changeset
126
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
127 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
128
21646
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
129 static
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
130 void pidgin_window_init(GtkWindow *wnd, const char *title, guint border_width, const char *role, gboolean resizable)
17166
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
131 {
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
132 if (title)
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
133 gtk_window_set_title(wnd, title);
18643
3bf2e6cb8e35 Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18464
diff changeset
134 #ifdef _WIN32
3bf2e6cb8e35 Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18464
diff changeset
135 else
3bf2e6cb8e35 Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18464
diff changeset
136 gtk_window_set_title(wnd, PIDGIN_ALERT_TITLE);
3bf2e6cb8e35 Prevent some more window titles from being "pidgin.exe" on Windows. Fixes #1767
Daniel Atallah <daniel.atallah@gmail.com>
parents: 18464
diff changeset
137 #endif
17166
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
138 gtk_container_set_border_width(GTK_CONTAINER(wnd), border_width);
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
139 if (role)
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
140 gtk_window_set_role(wnd, role);
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
141 gtk_window_set_resizable(wnd, resizable);
21646
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
142 }
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
143
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
144 GtkWidget *
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
145 pidgin_create_window(const char *title, guint border_width, const char *role, gboolean resizable)
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
146 {
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
147 GtkWindow *wnd = NULL;
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
148
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
149 wnd = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
150 pidgin_window_init(wnd, title, border_width, role, resizable);
17166
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
151
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
152 return GTK_WIDGET(wnd);
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
153 }
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
154
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
155 GtkWidget *
30016
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
156 pidgin_create_small_button(GtkWidget *image)
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
157 {
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
158 GtkWidget *button;
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
159
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
160 button = gtk_button_new();
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
161 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
162
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
163 /* don't allow focus on the close button */
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
164 gtk_button_set_focus_on_click(GTK_BUTTON(button), FALSE);
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
165
30018
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
166 /* set style to make it as small as possible */
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
167 gtk_widget_set_name(button, "pidgin-small-close-button");
30016
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
168
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
169 gtk_widget_show(image);
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
170
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
171 gtk_container_add(GTK_CONTAINER(button), image);
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
172
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
173 return button;
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
174 }
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
175
97005a2e99d7 Use a small GtkButton instead of the custom "X" for close in various
Kosta Arvanitis <karvanitis@hotmail.com>
parents: 29807
diff changeset
176 GtkWidget *
21646
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
177 pidgin_create_dialog(const char *title, guint border_width, const char *role, gboolean resizable)
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
178 {
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
179 GtkWindow *wnd = NULL;
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
180
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
181 wnd = GTK_WINDOW(gtk_dialog_new());
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
182 pidgin_window_init(wnd, title, border_width, role, resizable);
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
183 g_object_set(G_OBJECT(wnd), "has-separator", FALSE, NULL);
17166
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
184
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
185 return GTK_WIDGET(wnd);
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
186 }
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
187
92c3c2eeba87 Added to gtkutils.c:
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
188 GtkWidget *
21646
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
189 pidgin_dialog_get_vbox_with_properties(GtkDialog *dialog, gboolean homogeneous, gint spacing)
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
190 {
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
191 GtkBox *vbox = GTK_BOX(GTK_DIALOG(dialog)->vbox);
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
192 gtk_box_set_homogeneous(vbox, homogeneous);
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
193 gtk_box_set_spacing(vbox, spacing);
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
194 return GTK_WIDGET(vbox);
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
195 }
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
196
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
197 GtkWidget *pidgin_dialog_get_vbox(GtkDialog *dialog)
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
198 {
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
199 return GTK_DIALOG(dialog)->vbox;
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
200 }
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
201
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
202 GtkWidget *pidgin_dialog_get_action_area(GtkDialog *dialog)
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
203 {
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
204 return GTK_DIALOG(dialog)->action_area;
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
205 }
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
206
21652
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
207 GtkWidget *pidgin_dialog_add_button(GtkDialog *dialog, const char *label,
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
208 GCallback callback, gpointer callbackdata)
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
209 {
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
210 GtkWidget *button = gtk_button_new_from_stock(label);
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
211 GtkWidget *bbox = pidgin_dialog_get_action_area(dialog);
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
212 gtk_box_pack_start(GTK_BOX(bbox), button, FALSE, FALSE, 0);
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
213 if (callback)
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
214 g_signal_connect(G_OBJECT(button), "clicked", callback, callbackdata);
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
215 gtk_widget_show(button);
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
216 return button;
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
217 }
eb2d5ba2a50d Add a utility function pidgin_dialog_add_button to add buttons to a dialog
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21646
diff changeset
218
21646
2a2496044eef Patch from fmoo. This makes a lot of the windows closeable with Escape. There
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21560
diff changeset
219 GtkWidget *
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
220 pidgin_create_imhtml(gboolean editable, GtkWidget **imhtml_ret, GtkWidget **toolbar_ret, GtkWidget **sw_ret)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
221 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
222 GtkWidget *frame;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
223 GtkWidget *imhtml;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
224 GtkWidget *sep;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
225 GtkWidget *sw;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
226 GtkWidget *toolbar = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
227 GtkWidget *vbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
228
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
229 frame = gtk_frame_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
230 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_IN);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
231
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
232 vbox = gtk_vbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
233 gtk_container_add(GTK_CONTAINER(frame), vbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
234 gtk_widget_show(vbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
235
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
236 if (editable) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
237 toolbar = gtk_imhtmltoolbar_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
238 gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
239 gtk_widget_show(toolbar);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
240
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
241 sep = gtk_hseparator_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
242 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
243 g_signal_connect_swapped(G_OBJECT(toolbar), "show", G_CALLBACK(gtk_widget_show), sep);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
244 g_signal_connect_swapped(G_OBJECT(toolbar), "hide", G_CALLBACK(gtk_widget_hide), sep);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
245 gtk_widget_show(sep);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
246 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
247
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
248 imhtml = gtk_imhtml_new(NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
249 gtk_imhtml_set_editable(GTK_IMHTML(imhtml), editable);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
250 gtk_imhtml_set_format_functions(GTK_IMHTML(imhtml), GTK_IMHTML_ALL ^ GTK_IMHTML_IMAGE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
251 gtk_text_view_set_wrap_mode(GTK_TEXT_VIEW(imhtml), GTK_WRAP_WORD_CHAR);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
252 #ifdef USE_GTKSPELL
16062
07554cc5d090 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <stu@nosnilmot.com>
parents: 16010
diff changeset
253 if (editable && purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
254 pidgin_setup_gtkspell(GTK_TEXT_VIEW(imhtml));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
255 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
256 gtk_widget_show(imhtml);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
257
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
258 if (editable) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
259 gtk_imhtmltoolbar_attach(GTK_IMHTMLTOOLBAR(toolbar), imhtml);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
260 gtk_imhtmltoolbar_associate_smileys(GTK_IMHTMLTOOLBAR(toolbar), "default");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
261 }
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
262 pidgin_setup_imhtml(imhtml);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
263
31816
917c597beb97 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: 31460
diff changeset
264 sw = pidgin_make_scrollable(imhtml, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC, GTK_SHADOW_NONE, -1, -1);
917c597beb97 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: 31460
diff changeset
265 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
266
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
267 if (imhtml_ret != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
268 *imhtml_ret = imhtml;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
269
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
270 if (editable && (toolbar_ret != NULL))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
271 *toolbar_ret = toolbar;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
272
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
273 if (sw_ret != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
274 *sw_ret = sw;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
275
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
276 return frame;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
277 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
278
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
279 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
280 pidgin_set_sensitive_if_input(GtkWidget *entry, GtkWidget *dialog)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
281 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
282 const char *text = gtk_entry_get_text(GTK_ENTRY(entry));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
283 gtk_dialog_set_response_sensitive(GTK_DIALOG(dialog), GTK_RESPONSE_OK,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
284 (*text != '\0'));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
285 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
286
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
287 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
288 pidgin_toggle_sensitive(GtkWidget *widget, GtkWidget *to_toggle)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
289 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
290 gboolean sensitivity;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
291
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
292 if (to_toggle == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
293 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
294
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
295 sensitivity = GTK_WIDGET_IS_SENSITIVE(to_toggle);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
296
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
297 gtk_widget_set_sensitive(to_toggle, !sensitivity);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
298 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
299
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
300 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
301 pidgin_toggle_sensitive_array(GtkWidget *w, GPtrArray *data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
302 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
303 gboolean sensitivity;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
304 gpointer element;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
305 int i;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
306
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
307 for (i=0; i < data->len; i++) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
308 element = g_ptr_array_index(data,i);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
309 if (element == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
310 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
311
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
312 sensitivity = GTK_WIDGET_IS_SENSITIVE(element);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
313
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
314 gtk_widget_set_sensitive(element, !sensitivity);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
315 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
316 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
317
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
318 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
319 pidgin_toggle_showhide(GtkWidget *widget, GtkWidget *to_toggle)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
320 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
321 if (to_toggle == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
322 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
323
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
324 if (GTK_WIDGET_VISIBLE(to_toggle))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
325 gtk_widget_hide(to_toggle);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
326 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
327 gtk_widget_show(to_toggle);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
328 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
329
17274
5241d388f463 Change pidgin_separator to return the separator added to the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17095
diff changeset
330 GtkWidget *pidgin_separator(GtkWidget *menu)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
331 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
332 GtkWidget *menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
333
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
334 menuitem = gtk_separator_menu_item_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
335 gtk_widget_show(menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
336 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
17274
5241d388f463 Change pidgin_separator to return the separator added to the menu.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17095
diff changeset
337 return menuitem;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
338 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
339
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
340 GtkWidget *pidgin_new_item(GtkWidget *menu, const char *str)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
341 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
342 GtkWidget *menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
343 GtkWidget *label;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
344
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
345 menuitem = gtk_menu_item_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
346 if (menu)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
347 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
348 gtk_widget_show(menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
349
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
350 label = gtk_label_new(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
351 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
352 gtk_label_set_pattern(GTK_LABEL(label), "_");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
353 gtk_container_add(GTK_CONTAINER(menuitem), label);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
354 gtk_widget_show(label);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
355 /* FIXME: Go back and fix this
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
356 gtk_widget_add_accelerator(menuitem, "activate", accel, str[0],
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
357 GDK_MOD1_MASK, GTK_ACCEL_LOCKED);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
358 */
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
359 pidgin_set_accessible_label (menuitem, label);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
360 return menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
361 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
362
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
363 GtkWidget *pidgin_new_check_item(GtkWidget *menu, const char *str,
26706
4aa5400b1b99 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26705
diff changeset
364 GCallback cb, gpointer data, gboolean checked)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
365 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
366 GtkWidget *menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
367 menuitem = gtk_check_menu_item_new_with_mnemonic(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
368
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
369 if (menu)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
370 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
371
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
372 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menuitem), checked);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
373
26706
4aa5400b1b99 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26705
diff changeset
374 if (cb)
4aa5400b1b99 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26705
diff changeset
375 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
376
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
377 gtk_widget_show_all(menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
378
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
379 return menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
380 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
381
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
382 GtkWidget *
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
383 pidgin_pixbuf_toolbar_button_from_stock(const char *icon)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
384 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
385 GtkWidget *button, *image, *bbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
386
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
387 button = gtk_toggle_button_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
388 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
389
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
390 bbox = gtk_vbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
391
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
392 gtk_container_add (GTK_CONTAINER(button), bbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
393
15560
442128853bdb toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@gmail.com>
parents: 15516
diff changeset
394 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
395 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
396
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
397 gtk_widget_show_all(bbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
398
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
399 return button;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
400 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
401
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
402 GtkWidget *
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
403 pidgin_pixbuf_button_from_stock(const char *text, const char *icon,
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
404 PidginButtonOrientation style)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
405 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
406 GtkWidget *button, *image, *label, *bbox, *ibox, *lbox = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
407
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
408 button = gtk_button_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
409
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
410 if (style == PIDGIN_BUTTON_HORIZONTAL) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
411 bbox = gtk_hbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
412 ibox = gtk_hbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
413 if (text)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
414 lbox = gtk_hbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
415 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
416 bbox = gtk_vbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
417 ibox = gtk_vbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
418 if (text)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
419 lbox = gtk_vbox_new(FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
420 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
421
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
422 gtk_container_add(GTK_CONTAINER(button), bbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
423
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
424 if (icon) {
29807
a4167f67d118 *** Plucked rev df5196ac4c45dfff9cad5768c27d4e1d46fbb2ab (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29757
diff changeset
425 gtk_box_pack_start(GTK_BOX(bbox), ibox, TRUE, TRUE, 0);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
426 image = gtk_image_new_from_stock(icon, GTK_ICON_SIZE_BUTTON);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
427 gtk_box_pack_end(GTK_BOX(ibox), image, FALSE, TRUE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
428 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
429
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
430 if (text) {
29807
a4167f67d118 *** Plucked rev df5196ac4c45dfff9cad5768c27d4e1d46fbb2ab (qulogic@pidgin.im):
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29757
diff changeset
431 gtk_box_pack_start(GTK_BOX(bbox), lbox, TRUE, TRUE, 0);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
432 label = gtk_label_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
433 gtk_label_set_text_with_mnemonic(GTK_LABEL(label), text);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
434 gtk_label_set_mnemonic_widget(GTK_LABEL(label), button);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
435 gtk_box_pack_start(GTK_BOX(lbox), label, FALSE, TRUE, 0);
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
436 pidgin_set_accessible_label (button, label);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
437 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
438
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
439 gtk_widget_show_all(bbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
440
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
441 return button;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
442 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
443
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
444
26706
4aa5400b1b99 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26705
diff changeset
445 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)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
446 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
447 GtkWidget *menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
448 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
449 GtkWidget *hbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
450 GtkWidget *label;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
451 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
452 GtkWidget *image;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
453
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
454 if (icon == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
455 menuitem = gtk_menu_item_new_with_mnemonic(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
456 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
457 menuitem = gtk_image_menu_item_new_with_mnemonic(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
459 if (menu)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
460 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
461
26706
4aa5400b1b99 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26705
diff changeset
462 if (cb)
4aa5400b1b99 Replace the deprecated GtkSignalFunc and GTK_SIGNAL_FUNC with GCallback and
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26705
diff changeset
463 g_signal_connect(G_OBJECT(menuitem), "activate", cb, data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
464
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
465 if (icon != NULL) {
15560
442128853bdb toolbar/menu icons. reduce the imhtmltoolbar spacing. more gaimstock pruning
Sean Egan <seanegan@gmail.com>
parents: 15516
diff changeset
466 image = gtk_image_new_from_stock(icon, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
467 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(menuitem), image);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
468 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
469 /* FIXME: this isn't right
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
470 if (mod) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
471 label = gtk_label_new(mod);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
472 gtk_box_pack_end(GTK_BOX(hbox), label, FALSE, FALSE, 2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
473 gtk_widget_show(label);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
474 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
475 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
476 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
477 if (accel_key) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
478 gtk_widget_add_accelerator(menuitem, "activate", accel, accel_key,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
479 accel_mods, GTK_ACCEL_LOCKED);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
480 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
481 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
482
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
483 gtk_widget_show_all(menuitem);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
484
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
485 return menuitem;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
486 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
487
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
488 GtkWidget *
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
489 pidgin_make_frame(GtkWidget *parent, const char *title)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
490 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
491 GtkWidget *vbox, *label, *hbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
492 char *labeltitle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
493
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15738
diff changeset
494 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
495 gtk_box_pack_start(GTK_BOX(parent), vbox, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
496 gtk_widget_show(vbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
497
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
498 label = gtk_label_new(NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
499
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
500 labeltitle = g_strdup_printf("<span weight=\"bold\">%s</span>", title);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
501 gtk_label_set_markup(GTK_LABEL(label), labeltitle);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
502 g_free(labeltitle);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
503
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
504 gtk_misc_set_alignment(GTK_MISC(label), 0, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
505 gtk_box_pack_start(GTK_BOX(vbox), label, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
506 gtk_widget_show(label);
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
507 pidgin_set_accessible_label (vbox, label);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
508
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15738
diff changeset
509 hbox = gtk_hbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
510 gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
511 gtk_widget_show(hbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
512
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
513 label = gtk_label_new(" ");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
514 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
515 gtk_widget_show(label);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
516
15821
cebfc6af3eb5 More Gaim to Pidgin stuff
Sean Egan <seanegan@gmail.com>
parents: 15738
diff changeset
517 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
518 gtk_box_pack_start(GTK_BOX(hbox), vbox, FALSE, FALSE, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
519 gtk_widget_show(vbox);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
520
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
521 return vbox;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
522 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
523
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
524 static gpointer
17133
f93dcfab772d Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17132
diff changeset
525 aop_option_menu_get_selected(GtkWidget *optmenu, GtkWidget **p_item)
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
526 {
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
527 GtkWidget *menu = gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu));
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
528 GtkWidget *item = gtk_menu_get_active(GTK_MENU(menu));
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
529 if (p_item)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
530 (*p_item) = item;
27057
fe1603ecf579 Avoid an assertion when nothing in dropdown is selected.
Paul Aurich <paul@darkrain42.org>
parents: 26811
diff changeset
531 return item ? g_object_get_data(G_OBJECT(item), "aop_per_item_data") : NULL;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
532 }
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
533
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
534 static void
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
535 aop_menu_cb(GtkWidget *optmenu, GCallback cb)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
536 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
537 GtkWidget *item;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
538 gpointer per_item_data;
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
539
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
540 per_item_data = aop_option_menu_get_selected(optmenu, &item);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
541
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
542 if (cb != NULL) {
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
543 ((void (*)(GtkWidget *, gpointer, gpointer))cb)(item, per_item_data, g_object_get_data(G_OBJECT(optmenu), "user_data"));
17205
c8f1748e5af9 Add some braces and clean up indentation.
Richard Laager <rlaager@wiktel.com>
parents: 17204
diff changeset
544 }
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
545 }
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
546
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
547 static GtkWidget *
17526
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
548 aop_menu_item_new(GtkSizeGroup *sg, GdkPixbuf *pixbuf, const char *lbl, gpointer per_item_data, const char *data)
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
549 {
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
550 GtkWidget *item;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
551 GtkWidget *hbox;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
552 GtkWidget *image;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
553 GtkWidget *label;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
554
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
555 item = gtk_menu_item_new();
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
556 gtk_widget_show(item);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
557
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
558 hbox = gtk_hbox_new(FALSE, 4);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
559 gtk_widget_show(hbox);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
560
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
561 /* Create the image */
17206
662552c912b4 Fix a logic mistake I introduced during a cleanup.
Richard Laager <rlaager@wiktel.com>
parents: 17205
diff changeset
562 if (pixbuf == NULL)
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
563 image = gtk_image_new();
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
564 else
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
565 image = gtk_image_new_from_pixbuf(pixbuf);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
566 gtk_widget_show(image);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
567
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
568 if (sg)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
569 gtk_size_group_add_widget(sg, image);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
570
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
571 /* Create the label */
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
572 label = gtk_label_new (lbl);
17225
45fcb1611bef Forgot an instance of g_object_new and some other changes are necessary, too.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17209
diff changeset
573 gtk_widget_show (label);
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
574 gtk_label_set_justify(GTK_LABEL(label), GTK_JUSTIFY_LEFT);
17225
45fcb1611bef Forgot an instance of g_object_new and some other changes are necessary, too.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17209
diff changeset
575 gtk_misc_set_alignment(GTK_MISC(label), 0.0, 0.5);
25415
584063555949 Remove trailing whitespace
Mark Doliner <mark@kingant.net>
parents: 25372
diff changeset
576
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
577 gtk_container_add(GTK_CONTAINER(item), hbox);
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
578 gtk_box_pack_start(GTK_BOX(hbox), image, FALSE, FALSE, 0);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
579 gtk_box_pack_start(GTK_BOX(hbox), label, TRUE, TRUE, 0);
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
580
17526
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
581 g_object_set_data(G_OBJECT (item), data, per_item_data);
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
582 g_object_set_data(G_OBJECT (item), "aop_per_item_data", per_item_data);
17133
f93dcfab772d Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17132
diff changeset
583
f93dcfab772d Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17132
diff changeset
584 pidgin_set_accessible_label(item, label);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
585
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
586 return item;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
587 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
588
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
589 static GdkPixbuf *
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
590 pidgin_create_prpl_icon_from_prpl(PurplePlugin *prpl, PidginPrplIconSize size, PurpleAccount *account)
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
591 {
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
592 PurplePluginProtocolInfo *prpl_info;
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
593 const char *protoname = NULL;
18144
1a282f3d8057 Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@wiktel.com>
parents: 18121
diff changeset
594 char *tmp;
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
595 char *filename = NULL;
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
596 GdkPixbuf *pixbuf;
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
597
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
598 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(prpl);
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
599 if (prpl_info->list_icon == NULL)
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
600 return NULL;
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
601
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
602 protoname = prpl_info->list_icon(account, NULL);
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
603 if (protoname == NULL)
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
604 return NULL;
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
605
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
606 /*
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
607 * Status icons will be themeable too, and then it will look up
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
608 * protoname from the theme
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
609 */
18144
1a282f3d8057 Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@wiktel.com>
parents: 18121
diff changeset
610 tmp = g_strconcat(protoname, ".png", NULL);
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
611
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
612 filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols",
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
613 size == PIDGIN_PRPL_ICON_SMALL ? "16" :
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
614 size == PIDGIN_PRPL_ICON_MEDIUM ? "22" : "48",
18144
1a282f3d8057 Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@wiktel.com>
parents: 18121
diff changeset
615 tmp, NULL);
1a282f3d8057 Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@wiktel.com>
parents: 18121
diff changeset
616 g_free(tmp);
1a282f3d8057 Use dynamic string manipulation to get rid of a MAXPATHLEN.
Richard Laager <rlaager@wiktel.com>
parents: 18121
diff changeset
617
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
618 pixbuf = pidgin_pixbuf_new_from_file(filename);
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
619 g_free(filename);
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
620
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
621 return pixbuf;
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
622 }
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
623
16971
5143cdd8ad79 disapproval of revision '4c87fc288fc11aefa6d7ff9c06f98a532e72d6fb'
Richard Laager <rlaager@wiktel.com>
parents: 16970
diff changeset
624 static GtkWidget *
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
625 aop_option_menu_new(AopMenu *aop_menu, GCallback cb, gpointer user_data)
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
626 {
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
627 GtkWidget *optmenu;
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
628
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
629 optmenu = gtk_option_menu_new();
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
630 gtk_widget_show(optmenu);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
631 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), aop_menu->menu);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
632
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
633 if (aop_menu->default_item != -1)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
634 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), aop_menu->default_item);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
635
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
636 g_object_set_data_full(G_OBJECT(optmenu), "aop_menu", aop_menu, (GDestroyNotify)g_free);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
637 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
638
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
639 g_signal_connect(G_OBJECT(optmenu), "changed", G_CALLBACK(aop_menu_cb), cb);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
640
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
641 return optmenu;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
642 }
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
643
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
644 static void
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
645 aop_option_menu_replace_menu(GtkWidget *optmenu, AopMenu *new_aop_menu)
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
646 {
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
647 if (gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)))
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
648 gtk_option_menu_remove_menu(GTK_OPTION_MENU(optmenu));
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
649
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
650 gtk_option_menu_set_menu(GTK_OPTION_MENU(optmenu), new_aop_menu->menu);
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
651
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
652 if (new_aop_menu->default_item != -1)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
653 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), new_aop_menu->default_item);
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
654
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
655 g_object_set_data_full(G_OBJECT(optmenu), "aop_menu", new_aop_menu, (GDestroyNotify)g_free);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
656 }
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
657
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
658 static void
17133
f93dcfab772d Formatting changes.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17132
diff changeset
659 aop_option_menu_select_by_data(GtkWidget *optmenu, gpointer data)
16971
5143cdd8ad79 disapproval of revision '4c87fc288fc11aefa6d7ff9c06f98a532e72d6fb'
Richard Laager <rlaager@wiktel.com>
parents: 16970
diff changeset
660 {
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
661 guint idx;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
662 GList *llItr = NULL;
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
663
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
664 for (idx = 0, llItr = GTK_MENU_SHELL(gtk_option_menu_get_menu(GTK_OPTION_MENU(optmenu)))->children;
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
665 llItr != NULL;
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
666 llItr = llItr->next, idx++) {
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
667 if (data == g_object_get_data(G_OBJECT(llItr->data), "aop_per_item_data")) {
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
668 gtk_option_menu_set_history(GTK_OPTION_MENU(optmenu), idx);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
669 break;
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
670 }
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
671 }
16971
5143cdd8ad79 disapproval of revision '4c87fc288fc11aefa6d7ff9c06f98a532e72d6fb'
Richard Laager <rlaager@wiktel.com>
parents: 16970
diff changeset
672 }
5143cdd8ad79 disapproval of revision '4c87fc288fc11aefa6d7ff9c06f98a532e72d6fb'
Richard Laager <rlaager@wiktel.com>
parents: 16970
diff changeset
673
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
674 static AopMenu *
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
675 create_protocols_menu(const char *default_proto_id)
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
676 {
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
677 AopMenu *aop_menu = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
678 PurplePlugin *plugin;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
679 GdkPixbuf *pixbuf = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
680 GtkSizeGroup *sg;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
681 GList *p;
31460
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
682 const char *gtalk_name = NULL, *facebook_name = NULL;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
683 int i;
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
684
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
685 aop_menu = g_malloc0(sizeof(AopMenu));
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
686 aop_menu->default_item = -1;
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
687 aop_menu->menu = gtk_menu_new();
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
688 gtk_widget_show(aop_menu->menu);
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
689 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
17063
fdd1a73aa37e Only include Google Talk if we have XMPP.
Richard Laager <rlaager@wiktel.com>
parents: 17057
diff changeset
690
31460
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
691 if (purple_find_prpl("prpl-jabber")) {
17084
10c7c5d4ea25 Patch from Gabriel Schulhof to fix the Google-Talk selection.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17063
diff changeset
692 gtalk_name = _("Google Talk");
31460
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
693 facebook_name = _("Facebook (XMPP)");
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
694 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
695
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
696 for (p = purple_plugins_get_protocols(), i = 0;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
697 p != NULL;
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
698 p = p->next, i++) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
699
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
700 plugin = (PurplePlugin *)p->data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
701
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
702 if (gtalk_name && strcmp(gtalk_name, plugin->info->name) < 0) {
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
703 char *filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols",
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
704 "16", "google-talk.png", NULL);
17526
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
705 GtkWidget *item;
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
706
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
707 pixbuf = pidgin_pixbuf_new_from_file(filename);
17057
bc16e00f1f7d Sort Google Talk appropriately.
Richard Laager <rlaager@wiktel.com>
parents: 17001
diff changeset
708 g_free(filename);
bc16e00f1f7d Sort Google Talk appropriately.
Richard Laager <rlaager@wiktel.com>
parents: 17001
diff changeset
709
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
710 gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu),
17526
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
711 item = aop_menu_item_new(sg, pixbuf, gtalk_name, "prpl-jabber", "protocol"));
31460
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
712 g_object_set_data(G_OBJECT(item), "fakegoogle", GINT_TO_POINTER(1));
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
713
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
714 if (pixbuf)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
715 g_object_unref(pixbuf);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
716
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
717 gtalk_name = NULL;
17659
ff04387682ce Fix for the protocol type being off by one in modify account dialog
Stu Tomlinson <stu@nosnilmot.com>
parents: 17552
diff changeset
718 i++;
17057
bc16e00f1f7d Sort Google Talk appropriately.
Richard Laager <rlaager@wiktel.com>
parents: 17001
diff changeset
719 }
bc16e00f1f7d Sort Google Talk appropriately.
Richard Laager <rlaager@wiktel.com>
parents: 17001
diff changeset
720
31460
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
721 if (facebook_name && strcmp(facebook_name, plugin->info->name) < 0) {
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
722 char *filename = g_build_filename(DATADIR, "pixmaps", "pidgin", "protocols",
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
723 "16", "facebook.png", NULL);
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
724 GtkWidget *item;
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
725
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
726 pixbuf = pidgin_pixbuf_new_from_file(filename);
31460
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
727 g_free(filename);
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
728
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
729 gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu),
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
730 item = aop_menu_item_new(sg, pixbuf, facebook_name, "prpl-jabber", "protocol"));
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
731 g_object_set_data(G_OBJECT(item), "fakefacebook", GINT_TO_POINTER(1));
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
732
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
733 if (pixbuf)
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
734 g_object_unref(pixbuf);
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
735
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
736 facebook_name = NULL;
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
737 i++;
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
738 }
695b6e57e255 UI hack ala Google Talk for Facebook.
Stu Tomlinson <stu@nosnilmot.com>
parents: 30863
diff changeset
739
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
740 pixbuf = pidgin_create_prpl_icon_from_prpl(plugin, PIDGIN_PRPL_ICON_SMALL, NULL);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
741
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
742 gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu),
17526
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
743 aop_menu_item_new(sg, pixbuf, plugin->info->name, plugin->info->id, "protocol"));
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
744
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
745 if (pixbuf)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
746 g_object_unref(pixbuf);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
747
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
748 if (default_proto_id != NULL && !strcmp(plugin->info->id, default_proto_id))
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
749 aop_menu->default_item = i;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
750 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
751
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
752 g_object_unref(sg);
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
753
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
754 return aop_menu;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
755 }
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
756
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
757 GtkWidget *
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
758 pidgin_protocol_option_menu_new(const char *id, GCallback cb,
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
759 gpointer user_data)
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
760 {
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
761 return aop_option_menu_new(create_protocols_menu(id), cb, user_data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
762 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
763
18464
09b964413667 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@gmail.com>
parents: 18341
diff changeset
764 const char *
09b964413667 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@gmail.com>
parents: 18341
diff changeset
765 pidgin_protocol_option_menu_get_selected(GtkWidget *optmenu)
09b964413667 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@gmail.com>
parents: 18341
diff changeset
766 {
09b964413667 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@gmail.com>
parents: 18341
diff changeset
767 return (const char *)aop_option_menu_get_selected(optmenu, NULL);
09b964413667 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@gmail.com>
parents: 18341
diff changeset
768 }
09b964413667 Patch from nix_nix, adds 'get prpl name from account menu' API
Sean Egan <seanegan@gmail.com>
parents: 18341
diff changeset
769
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
770 PurpleAccount *
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
771 pidgin_account_option_menu_get_selected(GtkWidget *optmenu)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
772 {
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
773 return (PurpleAccount *)aop_option_menu_get_selected(optmenu, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
774 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
775
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
776 static AopMenu *
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
777 create_account_menu(PurpleAccount *default_account,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
778 PurpleFilterAccountFunc filter_func, gboolean show_all)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
779 {
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
780 AopMenu *aop_menu = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
781 PurpleAccount *account;
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
782 GdkPixbuf *pixbuf = NULL;
18063
926ccb104da0 disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents: 18058
diff changeset
783 GList *list;
926ccb104da0 disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents: 18058
diff changeset
784 GList *p;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
785 GtkSizeGroup *sg;
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
786 int i;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
787 char buf[256];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
788
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
789 if (show_all)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
790 list = purple_accounts_get_all();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
791 else
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
792 list = purple_connections_get_all();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
793
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
794 aop_menu = g_malloc0(sizeof(AopMenu));
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
795 aop_menu->default_item = -1;
17225
45fcb1611bef Forgot an instance of g_object_new and some other changes are necessary, too.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17209
diff changeset
796 aop_menu->menu = gtk_menu_new();
45fcb1611bef Forgot an instance of g_object_new and some other changes are necessary, too.
Gabriel Schulhof <nix@go-nix.ca>
parents: 17209
diff changeset
797 gtk_widget_show(aop_menu->menu);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
798 sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
799
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
800 for (p = list, i = 0; p != NULL; p = p->next, i++) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
801 if (show_all)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
802 account = (PurpleAccount *)p->data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
803 else {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
804 PurpleConnection *gc = (PurpleConnection *)p->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
805
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
806 account = purple_connection_get_account(gc);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
807 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
808
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
809 if (filter_func && !filter_func(account)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
810 i--;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
811 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
812 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
813
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
814 pixbuf = pidgin_create_prpl_icon(account, PIDGIN_PRPL_ICON_SMALL);
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
815
17515
2f8d77356268 merge of '2f10c41a04555ebc895ec5168c3c2996c738cbd9'
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17397 17410
diff changeset
816 if (pixbuf) {
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
817 if (purple_account_is_disconnected(account) && show_all &&
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
818 purple_connections_get_all())
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
819 gdk_pixbuf_saturate_and_pixelate(pixbuf, pixbuf, 0.0, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
820 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
821
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
822 if (purple_account_get_alias(account)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
823 g_snprintf(buf, sizeof(buf), "%s (%s) (%s)",
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
824 purple_account_get_username(account),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
825 purple_account_get_alias(account),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
826 purple_account_get_protocol_name(account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
827 } else {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
828 g_snprintf(buf, sizeof(buf), "%s (%s)",
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
829 purple_account_get_username(account),
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
830 purple_account_get_protocol_name(account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
831 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
832
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
833 gtk_menu_shell_append(GTK_MENU_SHELL(aop_menu->menu),
17526
8bc2b7ec45c1 Make sure if some plugin used pidgin_protocol_option_menu_new, they continue
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17516
diff changeset
834 aop_menu_item_new(sg, pixbuf, buf, account, "account"));
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
835
17203
a8365d7615be Style changes in if statements.
Richard Laager <rlaager@wiktel.com>
parents: 17202
diff changeset
836 if (pixbuf)
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
837 g_object_unref(pixbuf);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
838
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
839 if (default_account && account == default_account)
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
840 aop_menu->default_item = i;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
841 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
842
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
843 g_object_unref(sg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
844
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
845 return aop_menu;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
846 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
847
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
848 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
849 regenerate_account_menu(GtkWidget *optmenu)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
850 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
851 gboolean show_all;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
852 PurpleAccount *account;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
853 PurpleFilterAccountFunc filter_func;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
854
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
855 account = (PurpleAccount *)aop_option_menu_get_selected(optmenu, NULL);
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
856 show_all = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(optmenu), "show_all"));
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
857 filter_func = g_object_get_data(G_OBJECT(optmenu), "filter_func");
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
858
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
859 aop_option_menu_replace_menu(optmenu, create_account_menu(account, filter_func, show_all));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
860 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
861
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
862 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
863 account_menu_sign_on_off_cb(PurpleConnection *gc, GtkWidget *optmenu)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
864 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
865 regenerate_account_menu(optmenu);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
866 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
867
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
868 static void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
869 account_menu_added_removed_cb(PurpleAccount *account, GtkWidget *optmenu)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
870 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
871 regenerate_account_menu(optmenu);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
872 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
873
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
874 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
875 account_menu_destroyed_cb(GtkWidget *optmenu, GdkEvent *event,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
876 void *user_data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
877 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
878 purple_signals_disconnect_by_handle(optmenu);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
879
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
880 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
881 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
882
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
883 void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
884 pidgin_account_option_menu_set_selected(GtkWidget *optmenu, PurpleAccount *account)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
885 {
17410
fe8a1051aa0a Casting things to gpointer isn't useful, unless they were previously const.
Richard Laager <rlaager@wiktel.com>
parents: 17225
diff changeset
886 aop_option_menu_select_by_data(optmenu, account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
887 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
888
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
889 GtkWidget *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
890 pidgin_account_option_menu_new(PurpleAccount *default_account,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
891 gboolean show_all, GCallback cb,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
892 PurpleFilterAccountFunc filter_func,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
893 gpointer user_data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
894 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
895 GtkWidget *optmenu;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
896
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
897 /* Create the option menu */
17202
06aa5dd957c6 Style change: death to spaces before semi-colons.
Richard Laager <rlaager@wiktel.com>
parents: 17200
diff changeset
898 optmenu = aop_option_menu_new(create_account_menu(default_account, filter_func, show_all), cb, user_data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
899
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
900 g_signal_connect(G_OBJECT(optmenu), "destroy",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
901 G_CALLBACK(account_menu_destroyed_cb), NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
902
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
903 /* Register the purple sign on/off event callbacks. */
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
904 purple_signal_connect(purple_connections_get_handle(), "signed-on",
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
905 optmenu, PURPLE_CALLBACK(account_menu_sign_on_off_cb),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
906 optmenu);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
907 purple_signal_connect(purple_connections_get_handle(), "signed-off",
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
908 optmenu, PURPLE_CALLBACK(account_menu_sign_on_off_cb),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
909 optmenu);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
910 purple_signal_connect(purple_accounts_get_handle(), "account-added",
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
911 optmenu, PURPLE_CALLBACK(account_menu_added_removed_cb),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
912 optmenu);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
913 purple_signal_connect(purple_accounts_get_handle(), "account-removed",
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
914 optmenu, PURPLE_CALLBACK(account_menu_added_removed_cb),
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
915 optmenu);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
916
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
917 /* Set some data. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
918 g_object_set_data(G_OBJECT(optmenu), "user_data", user_data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
919 g_object_set_data(G_OBJECT(optmenu), "show_all", GINT_TO_POINTER(show_all));
17209
5e89c6d85d6e Coding style changes
Gabriel Schulhof <nix@go-nix.ca>
parents: 17206
diff changeset
920 g_object_set_data(G_OBJECT(optmenu), "filter_func", filter_func);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
921
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
922 return optmenu;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
923 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
924
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
925 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
926 pidgin_setup_gtkspell(GtkTextView *textview)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
927 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
928 #ifdef USE_GTKSPELL
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
929 GError *error = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
930 char *locale = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
931
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
932 g_return_if_fail(textview != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
933 g_return_if_fail(GTK_IS_TEXT_VIEW(textview));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
934
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
935 if (gtkspell_new_attach(textview, locale, &error) == NULL && error)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
936 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
937 purple_debug_warning("gtkspell", "Failed to setup GtkSpell: %s\n",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
938 error->message);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
939 g_error_free(error);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
940 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
941 #endif /* USE_GTKSPELL */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
942 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
943
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
944 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
945 pidgin_save_accels_cb(GtkAccelGroup *accel_group, guint arg1,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
946 GdkModifierType arg2, GClosure *arg3,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
947 gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
948 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
949 purple_debug(PURPLE_DEBUG_MISC, "accels",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
950 "accel changed, scheduling save.\n");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
951
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
952 if (!accels_save_timer)
26613
b162300ab1e7 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
foss@abala.me
parents: 26325
diff changeset
953 accels_save_timer = purple_timeout_add_seconds(5, pidgin_save_accels,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
954 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
955 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
956
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
957 gboolean
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
958 pidgin_save_accels(gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
959 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
960 char *filename = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
961
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
962 filename = g_build_filename(purple_user_dir(), G_DIR_SEPARATOR_S,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
963 "accels", NULL);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
964 purple_debug(PURPLE_DEBUG_MISC, "accels", "saving accels to %s\n", filename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
965 gtk_accel_map_save(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
966 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
967
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
968 accels_save_timer = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
969 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
970 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
971
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
972 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
973 pidgin_load_accels()
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
974 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
975 char *filename = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
976
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
977 filename = g_build_filename(purple_user_dir(), G_DIR_SEPARATOR_S,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
978 "accels", NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
979 gtk_accel_map_load(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
980 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
981 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
982
18218
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
983 static void
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
984 show_retrieveing_info(PurpleConnection *conn, const char *name)
17516
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
985 {
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
986 PurpleNotifyUserInfo *info = purple_notify_user_info_new();
32363
3322201b446f I went through all our calls to purple_notify_user_info_add_pair() and
Mark Doliner <mark@kingant.net>
parents: 32322
diff changeset
987 purple_notify_user_info_add_pair_plaintext(info, _("Information"), _("Retrieving..."));
17516
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
988 purple_notify_userinfo(conn, name, info, NULL, NULL);
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
989 purple_notify_user_info_destroy(info);
18218
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
990 }
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
991
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
992 void pidgin_retrieve_user_info(PurpleConnection *conn, const char *name)
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
993 {
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
994 show_retrieveing_info(conn, name);
17516
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
995 serv_get_info(conn, name);
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
996 }
8fe927fa0220 Fix the last merge.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17515
diff changeset
997
18218
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
998 void pidgin_retrieve_user_info_in_chat(PurpleConnection *conn, const char *name, int chat)
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
999 {
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1000 char *who = NULL;
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1001 PurplePluginProtocolInfo *prpl_info = NULL;
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1002
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1003 if (chat < 0) {
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1004 pidgin_retrieve_user_info(conn, name);
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1005 return;
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1006 }
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1007
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1008 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(conn->prpl);
23360
da78db9f188f Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23197
diff changeset
1009 if (prpl_info != NULL && prpl_info->get_cb_real_name)
da78db9f188f Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23197
diff changeset
1010 who = prpl_info->get_cb_real_name(conn, chat, name);
18218
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1011 if (prpl_info == NULL || prpl_info->get_cb_info == NULL) {
23360
da78db9f188f Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23197
diff changeset
1012 pidgin_retrieve_user_info(conn, who ? who : name);
da78db9f188f Pass the "real" chat username to the pidgin_retrieve_user_info function.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 23197
diff changeset
1013 g_free(who);
18218
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1014 return;
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1015 }
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1016
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1017 show_retrieveing_info(conn, who ? who : name);
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1018 prpl_info->get_cb_info(conn, chat, name);
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1019 g_free(who);
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1020 }
571e0ca28d6c Show immediate feedback when getting information about someone in a chat.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 18215
diff changeset
1021
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1022 gboolean
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1023 pidgin_parse_x_im_contact(const char *msg, gboolean all_accounts,
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1024 PurpleAccount **ret_account, char **ret_protocol,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1025 char **ret_username, char **ret_alias)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1026 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1027 char *protocol = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1028 char *username = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1029 char *alias = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1030 char *str;
30846
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30182
diff changeset
1031 char *s;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1032 gboolean valid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1033
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1034 g_return_val_if_fail(msg != NULL, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1035 g_return_val_if_fail(ret_protocol != NULL, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1036 g_return_val_if_fail(ret_username != NULL, FALSE);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1037
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1038 s = str = g_strdup(msg);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1039
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1040 while (*s != '\r' && *s != '\n' && *s != '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1041 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1042 char *key, *value;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1043
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1044 key = s;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1045
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1046 /* Grab the key */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1047 while (*s != '\r' && *s != '\n' && *s != '\0' && *s != ' ')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1048 s++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1049
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1050 if (*s == '\r') s++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1051
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1052 if (*s == '\n')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1053 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1054 s++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1055 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1056 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1057
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1058 if (*s != '\0') *s++ = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1059
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1060 /* Clear past any whitespace */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1061 while (*s != '\0' && *s == ' ')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1062 s++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1063
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1064 /* Now let's grab until the end of the line. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1065 value = s;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1066
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1067 while (*s != '\r' && *s != '\n' && *s != '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1068 s++;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1069
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1070 if (*s == '\r') *s++ = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1071 if (*s == '\n') *s++ = '\0';
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1072
30846
7c871249318b Fix some "Dead nested assignment"s and then kill off some useless
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30182
diff changeset
1073 if (strchr(key, ':') != NULL)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1074 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1075 if (!g_ascii_strcasecmp(key, "X-IM-Username:"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1076 username = g_strdup(value);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1077 else if (!g_ascii_strcasecmp(key, "X-IM-Protocol:"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1078 protocol = g_strdup(value);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1079 else if (!g_ascii_strcasecmp(key, "X-IM-Alias:"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1080 alias = g_strdup(value);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1081 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1082 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1083
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1084 if (username != NULL && protocol != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1085 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1086 valid = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1087
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1088 *ret_username = username;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1089 *ret_protocol = protocol;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1090
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1091 if (ret_alias != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1092 *ret_alias = alias;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1093
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1094 /* Check for a compatible account. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1095 if (ret_account != NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1096 {
18063
926ccb104da0 disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents: 18058
diff changeset
1097 GList *list;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1098 PurpleAccount *account = NULL;
18063
926ccb104da0 disapproval of revision '1411afd7660760db59966c3a9f18e2adab8eb27e'
Richard Laager <rlaager@wiktel.com>
parents: 18058
diff changeset
1099 GList *l;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1100 const char *protoname;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1101
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1102 if (all_accounts)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1103 list = purple_accounts_get_all();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1104 else
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1105 list = purple_connections_get_all();
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1106
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1107 for (l = list; l != NULL; l = l->next)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1108 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1109 PurpleConnection *gc;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1110 PurplePluginProtocolInfo *prpl_info = NULL;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1111 PurplePlugin *plugin;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1112
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1113 if (all_accounts)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1114 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1115 account = (PurpleAccount *)l->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1116
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1117 plugin = purple_plugins_find_with_id(
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1118 purple_account_get_protocol_id(account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1119
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1120 if (plugin == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1121 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1122 account = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1123
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1124 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1125 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1126
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1127 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1128 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1129 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1130 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1131 gc = (PurpleConnection *)l->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1132 account = purple_connection_get_account(gc);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1133
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1134 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1135 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1136
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1137 protoname = prpl_info->list_icon(account, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1138
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1139 if (!strcmp(protoname, protocol))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1140 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1141
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1142 account = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1143 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1144
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1145 /* Special case for AIM and ICQ */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1146 if (account == NULL && (!strcmp(protocol, "aim") ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1147 !strcmp(protocol, "icq")))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1148 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1149 for (l = list; l != NULL; l = l->next)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1150 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1151 PurpleConnection *gc;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1152 PurplePluginProtocolInfo *prpl_info = NULL;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1153 PurplePlugin *plugin;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1154
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1155 if (all_accounts)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1156 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1157 account = (PurpleAccount *)l->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1158
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1159 plugin = purple_plugins_find_with_id(
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1160 purple_account_get_protocol_id(account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1161
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1162 if (plugin == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1163 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1164 account = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1165
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1166 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1167 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1168
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1169 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1170 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1171 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1172 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1173 gc = (PurpleConnection *)l->data;
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1174 account = purple_connection_get_account(gc);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1175
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1176 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1177 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1178
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1179 protoname = prpl_info->list_icon(account, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1180
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1181 if (!strcmp(protoname, "aim") || !strcmp(protoname, "icq"))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1182 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1183
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1184 account = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1185 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1186 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1187
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1188 *ret_account = account;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1189 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1190 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1191 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1192 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1193 valid = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1194
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1195 g_free(username);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1196 g_free(protocol);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1197 g_free(alias);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1198 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1199
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1200 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1201
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1202 return valid;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1203 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1204
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1205 void
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
1206 pidgin_set_accessible_label (GtkWidget *w, GtkWidget *l)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1207 {
19367
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1208 AtkObject *acc;
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1209 const gchar *label_text;
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1210 const gchar *existing_name;
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1211
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1212 acc = gtk_widget_get_accessible (w);
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1213
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1214 /* If this object has no name, set it's name with the label text */
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1215 existing_name = atk_object_get_name (acc);
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1216 if (!existing_name) {
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1217 label_text = gtk_label_get_text (GTK_LABEL(l));
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1218 if (label_text)
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1219 atk_object_set_name (acc, label_text);
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1220 }
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1221
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1222 pidgin_set_accessible_relations(w, l);
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1223 }
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1224
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1225 void
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1226 pidgin_set_accessible_relations (GtkWidget *w, GtkWidget *l)
bf918749b375 Separate out setting up the labelled-by and label-for ATK relationships
Casey Harkins <charkins@pidgin.im>
parents: 18827
diff changeset
1227 {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1228 AtkObject *acc, *label;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1229 AtkObject *rel_obj[1];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1230 AtkRelationSet *set;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1231 AtkRelation *relation;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1232
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1233 acc = gtk_widget_get_accessible (w);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1234 label = gtk_widget_get_accessible (l);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1235
18287
44928d01ec8c Call gtk_label_set_mnemonic_widget() in pidgin_make_accessible_label. Closes #589
Sean Egan <seanegan@gmail.com>
parents: 18218
diff changeset
1236 /* Make sure mnemonics work */
20349
0484600ac434 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20342
diff changeset
1237 gtk_label_set_mnemonic_widget(GTK_LABEL(l), w);
0484600ac434 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20342
diff changeset
1238
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1239 /* Create the labeled-by relation */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1240 set = atk_object_ref_relation_set (acc);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1241 rel_obj[0] = label;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1242 relation = atk_relation_new (rel_obj, 1, ATK_RELATION_LABELLED_BY);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1243 atk_relation_set_add (set, relation);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1244 g_object_unref (relation);
20349
0484600ac434 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20342
diff changeset
1245 g_object_unref(set);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1246
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1247 /* Create the label-for relation */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1248 set = atk_object_ref_relation_set (label);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1249 rel_obj[0] = acc;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1250 relation = atk_relation_new (rel_obj, 1, ATK_RELATION_LABEL_FOR);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1251 atk_relation_set_add (set, relation);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1252 g_object_unref (relation);
20349
0484600ac434 applied changes from 29b2fc4762e2c5d03a7100c78f2a7b49237c5e80
Luke Schierer <lschiere@pidgin.im>
parents: 20342
diff changeset
1253 g_object_unref(set);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1254 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1255
18166
afeb35205669 Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <stu@nosnilmot.com>
parents: 18144
diff changeset
1256 void
afeb35205669 Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <stu@nosnilmot.com>
parents: 18144
diff changeset
1257 pidgin_menu_position_func_helper(GtkMenu *menu,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1258 gint *x,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1259 gint *y,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1260 gboolean *push_in,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1261 gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1262 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1263 GtkWidget *widget;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1264 GtkRequisition requisition;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1265 GdkScreen *screen;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1266 GdkRectangle monitor;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1267 gint monitor_num;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1268 gint space_left, space_right, space_above, space_below;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1269 gint needed_width;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1270 gint needed_height;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1271 gint xthickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1272 gint ythickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1273 gboolean rtl;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1274
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1275 g_return_if_fail(GTK_IS_MENU(menu));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1276
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1277 widget = GTK_WIDGET(menu);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1278 screen = gtk_widget_get_screen(widget);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1279 xthickness = widget->style->xthickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1280 ythickness = widget->style->ythickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1281 rtl = (gtk_widget_get_direction(widget) == GTK_TEXT_DIR_RTL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1282
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1283 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1284 * We need the requisition to figure out the right place to
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1285 * popup the menu. In fact, we always need to ask here, since
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1286 * if a size_request was queued while we weren't popped up,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1287 * the requisition won't have been recomputed yet.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1288 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1289 gtk_widget_size_request (widget, &requisition);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1290
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1291 monitor_num = gdk_screen_get_monitor_at_point (screen, *x, *y);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1292
32387
1f22e6ea1d2a It seems like there's a dereference missing here.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 32363
diff changeset
1293 *push_in = FALSE;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1294
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1295 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1296 * The placement of popup menus horizontally works like this (with
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1297 * RTL in parentheses)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1298 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1299 * - If there is enough room to the right (left) of the mouse cursor,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1300 * position the menu there.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1301 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1302 * - Otherwise, if if there is enough room to the left (right) of the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1303 * mouse cursor, position the menu there.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1304 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1305 * - Otherwise if the menu is smaller than the monitor, position it
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1306 * on the side of the mouse cursor that has the most space available
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1307 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1308 * - Otherwise (if there is simply not enough room for the menu on the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1309 * monitor), position it as far left (right) as possible.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1310 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1311 * Positioning in the vertical direction is similar: first try below
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1312 * mouse cursor, then above.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1313 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1314 gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1315
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1316 space_left = *x - monitor.x;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1317 space_right = monitor.x + monitor.width - *x - 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1318 space_above = *y - monitor.y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1319 space_below = monitor.y + monitor.height - *y - 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1320
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1321 /* position horizontally */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1322
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1323 /* the amount of space we need to position the menu. Note the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1324 * menu is offset "xthickness" pixels
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1325 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1326 needed_width = requisition.width - xthickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1327
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1328 if (needed_width <= space_left ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1329 needed_width <= space_right)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1330 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1331 if ((rtl && needed_width <= space_left) ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1332 (!rtl && needed_width > space_right))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1333 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1334 /* position left */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1335 *x = *x + xthickness - requisition.width + 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1336 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1337 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1338 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1339 /* position right */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1340 *x = *x - xthickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1341 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1342
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1343 /* x is clamped on-screen further down */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1344 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1345 else if (requisition.width <= monitor.width)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1346 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1347 /* the menu is too big to fit on either side of the mouse
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1348 * cursor, but smaller than the monitor. Position it on
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1349 * the side that has the most space
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1350 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1351 if (space_left > space_right)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1352 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1353 /* left justify */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1354 *x = monitor.x;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1355 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1356 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1357 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1358 /* right justify */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1359 *x = monitor.x + monitor.width - requisition.width;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1360 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1361 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1362 else /* menu is simply too big for the monitor */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1363 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1364 if (rtl)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1365 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1366 /* right justify */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1367 *x = monitor.x + monitor.width - requisition.width;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1368 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1369 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1370 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1371 /* left justify */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1372 *x = monitor.x;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1373 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1374 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1375
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1376 /* Position vertically. The algorithm is the same as above, but
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1377 * simpler because we don't have to take RTL into account.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1378 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1379 needed_height = requisition.height - ythickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1380
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1381 if (needed_height <= space_above ||
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1382 needed_height <= space_below)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1383 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1384 if (needed_height <= space_below)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1385 *y = *y - ythickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1386 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1387 *y = *y + ythickness - requisition.height + 1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1388
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1389 *y = CLAMP (*y, monitor.y,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1390 monitor.y + monitor.height - requisition.height);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1391 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1392 else if (needed_height > space_below && needed_height > space_above)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1393 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1394 if (space_below >= space_above)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1395 *y = monitor.y + monitor.height - requisition.height;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1396 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1397 *y = monitor.y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1398 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1399 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1400 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1401 *y = monitor.y;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1402 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1403 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1404
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1405
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1406 void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1407 pidgin_treeview_popup_menu_position_func(GtkMenu *menu,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1408 gint *x,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1409 gint *y,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1410 gboolean *push_in,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1411 gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1412 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1413 GtkWidget *widget = GTK_WIDGET(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1414 GtkTreeView *tv = GTK_TREE_VIEW(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1415 GtkTreePath *path;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1416 GtkTreeViewColumn *col;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1417 GdkRectangle rect;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1418 gint ythickness = GTK_WIDGET(menu)->style->ythickness;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1419
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1420 gdk_window_get_origin (widget->window, x, y);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1421 gtk_tree_view_get_cursor (tv, &path, &col);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1422 gtk_tree_view_get_cell_area (tv, path, col, &rect);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1423
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1424 *x += rect.x+rect.width;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1425 *y += rect.y+rect.height+ythickness;
18166
afeb35205669 Reduce code duplication and keep gtk 2.0 compatibility by making
Stu Tomlinson <stu@nosnilmot.com>
parents: 18144
diff changeset
1426 pidgin_menu_position_func_helper(menu, x, y, push_in, data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1427 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1428
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1429 enum {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1430 DND_FILE_TRANSFER,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1431 DND_IM_IMAGE,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1432 DND_BUDDY_ICON
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1433 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1434
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1435 typedef struct {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1436 char *filename;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1437 PurpleAccount *account;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1438 char *who;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1439 } _DndData;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1440
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1441 static void dnd_image_ok_callback(_DndData *data, int choice)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1442 {
31604
85d5f1e37fdb When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <mark@kingant.net>
parents: 31460
diff changeset
1443 const gchar *shortname;
23122
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1444 gchar *filedata;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1445 size_t size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1446 struct stat st;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1447 GError *err = NULL;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1448 PurpleConversation *conv;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1449 PidginConversation *gtkconv;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1450 GtkTextIter iter;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1451 int id;
23122
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1452 PurpleBuddy *buddy;
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1453 PurpleContact *contact;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1454 switch (choice) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1455 case DND_BUDDY_ICON:
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1456 if (g_stat(data->filename, &st)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1457 char *str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1458
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1459 str = g_strdup_printf(_("The following error has occurred loading %s: %s"),
21860
f23c41e65f63 Use g_sterror instead of strerror in two more places.
Mark Doliner <mark@kingant.net>
parents: 21778
diff changeset
1460 data->filename, g_strerror(errno));
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1461 purple_notify_error(NULL, NULL,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1462 _("Failed to load image"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1463 str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1464 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1465
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1466 break;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1467 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1468
23123
0ca259d5f928 Compile and de-warn.
Etan Reisner <pidgin@unreliablesource.net>
parents: 23122
diff changeset
1469 buddy = purple_find_buddy(data->account, data->who);
23122
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1470 if (!buddy) {
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1471 purple_debug_info("custom-icon", "You can only set custom icons for people on your buddylist.\n");
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1472 break;
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1473 }
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1474 contact = purple_buddy_get_contact(buddy);
f6c57e6e8a89 Deprecate pidgin_set_custom_buddy_icon and update the places that use it to
Etan Reisner <pidgin@unreliablesource.net>
parents: 23121
diff changeset
1475 purple_buddy_icons_node_set_custom_icon_from_file((PurpleBlistNode*)contact, data->filename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1476 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1477 case DND_FILE_TRANSFER:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1478 serv_send_file(purple_account_get_connection(data->account), data->who, data->filename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1479 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1480 case DND_IM_IMAGE:
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1481 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, data->account, data->who);
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1482 gtkconv = PIDGIN_CONVERSATION(conv);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1483
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1484 if (!g_file_get_contents(data->filename, &filedata, &size,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1485 &err)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1486 char *str;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1487
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1488 str = g_strdup_printf(_("The following error has occurred loading %s: %s"), data->filename, err->message);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1489 purple_notify_error(NULL, NULL,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1490 _("Failed to load image"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1491 str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1492
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1493 g_error_free(err);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1494 g_free(str);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1495
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1496 break;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1497 }
31604
85d5f1e37fdb When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <mark@kingant.net>
parents: 31460
diff changeset
1498 shortname = strrchr(data->filename, G_DIR_SEPARATOR);
85d5f1e37fdb When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <mark@kingant.net>
parents: 31460
diff changeset
1499 shortname = shortname ? shortname + 1 : data->filename;
85d5f1e37fdb When drag-dropping an image into an IM window and sending as an inline
Mark Doliner <mark@kingant.net>
parents: 31460
diff changeset
1500 id = purple_imgstore_add_with_id(filedata, size, shortname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1501
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1502 gtk_text_buffer_get_iter_at_mark(GTK_IMHTML(gtkconv->entry)->text_buffer, &iter,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1503 gtk_text_buffer_get_insert(GTK_IMHTML(gtkconv->entry)->text_buffer));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1504 gtk_imhtml_insert_image_at_iter(GTK_IMHTML(gtkconv->entry), id, &iter);
16375
391a79778f89 Rework the buddy icon subsystem to use the imgstore subsystem, and modify the
Richard Laager <rlaager@wiktel.com>
parents: 16255
diff changeset
1505 purple_imgstore_unref_by_id(id);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1506
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1507 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1508 }
24670
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1509 g_free(data->filename);
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1510 g_free(data->who);
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1511 g_free(data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1512 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1513
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1514 static void dnd_image_cancel_callback(_DndData *data, int choice)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1515 {
24670
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1516 g_free(data->filename);
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1517 g_free(data->who);
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1518 g_free(data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1519 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1520
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1521 static void dnd_set_icon_ok_cb(_DndData *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1522 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1523 dnd_image_ok_callback(data, DND_BUDDY_ICON);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1524 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1525
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1526 static void dnd_set_icon_cancel_cb(_DndData *data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1527 {
24670
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1528 g_free(data->filename);
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1529 g_free(data->who);
5ec72dbdd28e Fix warnings where size_t/gsize was used for printf with the wrong format
Paul Aurich <paul@darkrain42.org>
parents: 24546
diff changeset
1530 g_free(data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1531 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1532
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1533 void
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1534 pidgin_dnd_file_manage(GtkSelectionData *sd, PurpleAccount *account, const char *who)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1535 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1536 GdkPixbuf *pb;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1537 GList *files = purple_uri_list_extract_filenames((const gchar *)sd->data);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1538 PurpleConnection *gc = purple_account_get_connection(account);
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1539 PurplePluginProtocolInfo *prpl_info = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1540 #ifndef _WIN32
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1541 PurpleDesktopItem *item;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1542 #endif
28526
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1543 gchar *filename = NULL;
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1544 gchar *basename = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1545
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1546 g_return_if_fail(account != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1547 g_return_if_fail(who != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1548
28526
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1549 for ( ; files; files = g_list_delete_link(files, files)) {
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1550 g_free(filename);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1551 g_free(basename);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1552
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1553 filename = files->data;
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1554 basename = g_path_get_basename(filename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1555
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1556 /* XXX - Make ft API support creating a transfer with more than one file */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1557 if (!g_file_test(filename, G_FILE_TEST_EXISTS)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1558 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1559 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1560
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1561 /* XXX - make ft api suupport sending a directory */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1562 /* Are we dealing with a directory? */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1563 if (g_file_test(filename, G_FILE_TEST_IS_DIR)) {
16010
eae8e127e4fb make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15926
diff changeset
1564 char *str, *str2;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1565
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1566 str = g_strdup_printf(_("Cannot send folder %s."), basename);
16932
b668951121d8 Change the PIDGIN_NAME stuff to allow translators to transliterate the
Richard Laager <rlaager@wiktel.com>
parents: 16633
diff changeset
1567 str2 = g_strdup_printf(_("%s cannot transfer a folder. You will need to send the files within individually."), PIDGIN_NAME);
16010
eae8e127e4fb make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15926
diff changeset
1568
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1569 purple_notify_error(NULL, NULL,
16010
eae8e127e4fb make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15926
diff changeset
1570 str, str2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1571
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1572 g_free(str);
16010
eae8e127e4fb make things cleaner for translators
Nathan Walp <nwalp@pidgin.im>
parents: 15926
diff changeset
1573 g_free(str2);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1574 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1575 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1576
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1577 /* Are we dealing with an image? */
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
1578 pb = pidgin_pixbuf_new_from_file(filename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1579 if (pb) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1580 _DndData *data = g_malloc(sizeof(_DndData));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1581 gboolean ft = FALSE, im = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1582
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1583 data->who = g_strdup(who);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1584 data->filename = g_strdup(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1585 data->account = account;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1586
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1587 if (gc)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1588 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1589
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1590 if (prpl_info && prpl_info->options & OPT_PROTO_IM_IMAGE)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1591 im = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1592
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1593 if (prpl_info && prpl_info->can_receive_file)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1594 ft = prpl_info->can_receive_file(gc, who);
20900
f7b799e77c43 When drag-dropping an image onto a conversation, include 'Send image file' as
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20805
diff changeset
1595 else if (prpl_info && prpl_info->send_file)
f7b799e77c43 When drag-dropping an image onto a conversation, include 'Send image file' as
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 20805
diff changeset
1596 ft = TRUE;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1597
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1598 if (im && ft)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1599 purple_request_choice(NULL, NULL,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1600 _("You have dragged an image"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1601 _("You can send this image as a file transfer, "
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1602 "embed it into this message, or use it as the buddy icon for this user."),
29313
4931a24576bd Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29269
diff changeset
1603 DND_FILE_TRANSFER, _("OK"), (GCallback)dnd_image_ok_callback,
4931a24576bd Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29269
diff changeset
1604 _("Cancel"), (GCallback)dnd_image_cancel_callback,
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1605 account, who, NULL,
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1606 data,
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1607 _("Set as buddy icon"), DND_BUDDY_ICON,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1608 _("Send image file"), DND_FILE_TRANSFER,
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1609 _("Insert in message"), DND_IM_IMAGE,
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1610 NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1611 else if (!(im || ft))
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1612 purple_request_yes_no(NULL, NULL, _("You have dragged an image"),
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1613 _("Would you like to set it as the buddy icon for this user?"),
22143
70fc60344317 A few more of those "default_action" fixes
Mark Doliner <mark@kingant.net>
parents: 22012
diff changeset
1614 PURPLE_DEFAULT_ACTION_NONE,
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1615 account, who, NULL,
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1616 data, (GCallback)dnd_set_icon_ok_cb, (GCallback)dnd_set_icon_cancel_cb);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1617 else
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1618 purple_request_choice(NULL, NULL,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1619 _("You have dragged an image"),
17552
840ae0796048 Fix the "transfer file or embed image" message (it looks like it was copied and pasted incorrectly).
Daniel Atallah <daniel.atallah@gmail.com>
parents: 17489
diff changeset
1620 (ft ? _("You can send this image as a file transfer, or use it as the buddy icon for this user.") :
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1621 _("You can insert this image into this message, or use it as the buddy icon for this user")),
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1622 (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
29313
4931a24576bd Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29269
diff changeset
1623 _("OK"), (GCallback)dnd_image_ok_callback,
4931a24576bd Mark strings for translation.
Adi Roiban <adi@roiban.ro>
parents: 29269
diff changeset
1624 _("Cancel"), (GCallback)dnd_image_cancel_callback,
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1625 account, who, NULL,
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1626 data,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1627 _("Set as buddy icon"), DND_BUDDY_ICON,
16442
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1628 (ft ? _("Send image file") : _("Insert in message")), (ft ? DND_FILE_TRANSFER : DND_IM_IMAGE),
08db93bbd798 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 <evan.s@dreskin.net>
parents: 16255
diff changeset
1629 NULL);
26705
a3f7ade9e45b Use g_object_ref/unref instead of the deprecated versions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26613
diff changeset
1630 g_object_unref(G_OBJECT(pb));
28526
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1631
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1632 g_free(basename);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1633 while (files) {
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1634 g_free(files->data);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1635 files = g_list_delete_link(files, files);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1636 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1637 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1638 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1639
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1640 #ifndef _WIN32
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1641 /* Are we trying to send a .desktop file? */
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1642 else if (purple_str_has_suffix(basename, ".desktop") && (item = purple_desktop_item_new_from_file(filename))) {
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1643 PurpleDesktopItemType dtype;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1644 char key[64];
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1645 const char *itemname = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1646
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1647 const char * const *langs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1648 int i;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1649 langs = g_get_language_names();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1650 for (i = 0; langs[i]; i++) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1651 g_snprintf(key, sizeof(key), "Name[%s]", langs[i]);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1652 itemname = purple_desktop_item_get_string(item, key);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1653 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1654 }
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1655
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1656 if (!itemname)
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1657 itemname = purple_desktop_item_get_string(item, "Name");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1658
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1659 dtype = purple_desktop_item_get_entry_type(item);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1660 switch (dtype) {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1661 PurpleConversation *conv;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1662 PidginConversation *gtkconv;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1663
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1664 case PURPLE_DESKTOP_ITEM_TYPE_LINK:
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1665 conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who);
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1666 gtkconv = PIDGIN_CONVERSATION(conv);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1667 gtk_imhtml_insert_link(GTK_IMHTML(gtkconv->entry),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1668 gtk_text_buffer_get_insert(GTK_IMHTML(gtkconv->entry)->text_buffer),
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1669 purple_desktop_item_get_string(item, "URL"), itemname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1670 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1671 default:
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1672 /* I don't know if we really want to do anything here. Most of
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1673 * the desktop item types are crap like "MIME Type" (I have no
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1674 * clue how that would be a desktop item) and "Comment"...
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1675 * nothing we can really send. The only logical one is
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1676 * "Application," but do we really want to send a binary and
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1677 * nothing else? Probably not. I'll just give an error and
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
1678 * return. */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1679 /* The original patch sent the icon used by the launcher. That's probably wrong */
27366
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27057
diff changeset
1680 purple_notify_error(NULL, NULL, _("Cannot send launcher"),
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27057
diff changeset
1681 _("You dragged a desktop launcher. Most "
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27057
diff changeset
1682 "likely you wanted to send the target "
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27057
diff changeset
1683 "of this launcher instead of this "
73c8e1964eef A semi-random collection of English spelling and grammatical changes.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27057
diff changeset
1684 "launcher itself."));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1685 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1686 }
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1687 purple_desktop_item_unref(item);
28526
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1688 g_free(basename);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1689 while (files) {
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1690 g_free(files->data);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1691 files = g_list_delete_link(files, files);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1692 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1693 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1694 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1695 #endif /* _WIN32 */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1696
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1697 /* Everything is fine, let's send */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1698 serv_send_file(gc, who, filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1699 }
28526
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1700
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1701 g_free(filename);
07718e5eb8ce Fix various leaks of the basename/filename/entire list in pidgin_dnd_file_manage.
Paul Aurich <paul@darkrain42.org>
parents: 28306
diff changeset
1702 g_free(basename);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1703 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1704
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1705 void pidgin_buddy_icon_get_scale_size(GdkPixbuf *buf, PurpleBuddyIconSpec *spec, PurpleIconScaleRules rules, int *width, int *height)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1706 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1707 *width = gdk_pixbuf_get_width(buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1708 *height = gdk_pixbuf_get_height(buf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1709
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1710 if ((spec == NULL) || !(spec->scale_rules & rules))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1711 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1712
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1713 purple_buddy_icon_get_scale_size(spec, width, height);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1714
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1715 /* and now for some arbitrary sanity checks */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1716 if(*width > 100)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1717 *width = 100;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1718 if(*height > 100)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1719 *height = 100;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1720 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1721
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1722 GdkPixbuf * pidgin_create_status_icon(PurpleStatusPrimitive prim, GtkWidget *w, const char *size)
15738
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1723 {
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1724 GtkIconSize icon_size = gtk_icon_size_from_name(size);
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1725 GdkPixbuf *pixbuf = NULL;
26726
18543445e929 Reduce code duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26725
diff changeset
1726 const char *stock = pidgin_stock_id_from_status_primitive(prim);
18543445e929 Reduce code duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26725
diff changeset
1727
18543445e929 Reduce code duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26725
diff changeset
1728 pixbuf = gtk_widget_render_icon (w, stock ? stock : PIDGIN_STOCK_STATUS_AVAILABLE,
18543445e929 Reduce code duplication.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26725
diff changeset
1729 icon_size, "GtkWidget");
15738
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1730 return pixbuf;
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1731 }
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1732
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1733 static const char *
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1734 stock_id_from_status_primitive_idle(PurpleStatusPrimitive prim, gboolean idle)
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1735 {
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1736 const char *stock = NULL;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1737 switch (prim) {
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1738 case PURPLE_STATUS_UNSET:
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1739 stock = NULL;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1740 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1741 case PURPLE_STATUS_UNAVAILABLE:
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1742 stock = idle ? PIDGIN_STOCK_STATUS_BUSY_I : PIDGIN_STOCK_STATUS_BUSY;
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1743 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1744 case PURPLE_STATUS_AWAY:
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1745 stock = idle ? PIDGIN_STOCK_STATUS_AWAY_I : PIDGIN_STOCK_STATUS_AWAY;
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1746 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1747 case PURPLE_STATUS_EXTENDED_AWAY:
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1748 stock = idle ? PIDGIN_STOCK_STATUS_XA_I : PIDGIN_STOCK_STATUS_XA;
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1749 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1750 case PURPLE_STATUS_INVISIBLE:
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1751 stock = PIDGIN_STOCK_STATUS_INVISIBLE;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1752 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1753 case PURPLE_STATUS_OFFLINE:
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1754 stock = idle ? PIDGIN_STOCK_STATUS_OFFLINE_I : PIDGIN_STOCK_STATUS_OFFLINE;
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1755 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1756 default:
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1757 stock = idle ? PIDGIN_STOCK_STATUS_AVAILABLE_I : PIDGIN_STOCK_STATUS_AVAILABLE;
26725
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1758 break;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1759 }
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1760 return stock;
0011cd06990a Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26706
diff changeset
1761 }
15738
20225df32b7e Change some old, busted status icon stuff to use the new hotness
Sean Egan <seanegan@gmail.com>
parents: 15584
diff changeset
1762
26811
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1763 const char *
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1764 pidgin_stock_id_from_status_primitive(PurpleStatusPrimitive prim)
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1765 {
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1766 return stock_id_from_status_primitive_idle(prim, FALSE);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1767 }
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1768
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1769 const char *
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1770 pidgin_stock_id_from_presence(PurplePresence *presence)
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1771 {
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1772 PurpleStatus *status;
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1773 PurpleStatusType *type;
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1774 PurpleStatusPrimitive prim;
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1775 gboolean idle;
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1776
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1777 g_return_val_if_fail(presence, NULL);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1778
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1779 status = purple_presence_get_active_status(presence);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1780 type = purple_status_get_type(status);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1781 prim = purple_status_type_get_primitive(type);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1782
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1783 idle = purple_presence_is_idle(presence);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1784
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1785 return stock_id_from_status_primitive_idle(prim, idle);
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1786 }
89f613b16e2b New API to get the stock-id for a presence.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26736
diff changeset
1787
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1788 GdkPixbuf *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1789 pidgin_create_prpl_icon(PurpleAccount *account, PidginPrplIconSize size)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1790 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1791 PurplePlugin *prpl;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1792
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1793 g_return_val_if_fail(account != NULL, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1794
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1795 prpl = purple_find_prpl(purple_account_get_protocol_id(account));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1796 if (prpl == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1797 return NULL;
17397
012aaa301a30 Remove code duplication for prpl-icon creation.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17392
diff changeset
1798 return pidgin_create_prpl_icon_from_prpl(prpl, size, account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1799 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1800
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1801 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1802 menu_action_cb(GtkMenuItem *item, gpointer object)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1803 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1804 gpointer data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1805 void (*callback)(gpointer, gpointer);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1806
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1807 callback = g_object_get_data(G_OBJECT(item), "purplecallback");
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1808 data = g_object_get_data(G_OBJECT(item), "purplecallbackdata");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1809
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1810 if (callback)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1811 callback(object, data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1812 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1813
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1814 GtkWidget *
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1815 pidgin_append_menu_action(GtkWidget *menu, PurpleMenuAction *act,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1816 gpointer object)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1817 {
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1818 GtkWidget *menuitem;
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1819 GList *list;
17515
2f8d77356268 merge of '2f10c41a04555ebc895ec5168c3c2996c738cbd9'
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17397 17410
diff changeset
1820
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1821 if (act == NULL) {
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1822 return pidgin_separator(menu);
17515
2f8d77356268 merge of '2f10c41a04555ebc895ec5168c3c2996c738cbd9'
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17397 17410
diff changeset
1823 }
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1824
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1825 list = purple_menu_action_get_children(act);
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1826 menuitem = gtk_menu_item_new_with_mnemonic(purple_menu_action_get_label(act));
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1827
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1828 if (list == NULL) {
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1829 PurpleCallback callback;
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1830
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1831 callback = purple_menu_action_get_callback(act);
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1832
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1833 if (callback != NULL) {
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1834 g_object_set_data(G_OBJECT(menuitem),
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1835 "purplecallback",
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1836 callback);
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1837 g_object_set_data(G_OBJECT(menuitem),
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1838 "purplecallbackdata",
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1839 purple_menu_action_get_data(act));
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1840 g_signal_connect(G_OBJECT(menuitem), "activate",
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1841 G_CALLBACK(menu_action_cb),
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1842 object);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1843 } else {
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1844 gtk_widget_set_sensitive(menuitem, FALSE);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1845 }
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1846
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1847 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1848 } else {
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1849 GList *l = NULL;
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1850 GtkWidget *submenu = NULL;
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1851 GtkAccelGroup *group;
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1852
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1853 gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1854
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1855 submenu = gtk_menu_new();
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1856 gtk_menu_item_set_submenu(GTK_MENU_ITEM(menuitem), submenu);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1857
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1858 group = gtk_menu_get_accel_group(GTK_MENU(menu));
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1859 if (group) {
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1860 char *path = g_strdup_printf("%s/%s", GTK_MENU_ITEM(menuitem)->accel_path,
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1861 purple_menu_action_get_label(act));
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1862 gtk_menu_set_accel_path(GTK_MENU(submenu), path);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1863 g_free(path);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1864 gtk_menu_set_accel_group(GTK_MENU(submenu), group);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1865 }
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1866
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1867 for (l = list; l; l = l->next) {
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1868 PurpleMenuAction *act = (PurpleMenuAction *)l->data;
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1869
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1870 pidgin_append_menu_action(submenu, act, object);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1871 }
32466
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1872 g_list_free(list);
3b2ceeb8883b Hide-a-PurpleMenuAction.
masca@cpw.pidgin.im
parents: 32404
diff changeset
1873 purple_menu_action_set_children(act, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1874 }
17392
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1875 purple_menu_action_free(act);
d48026a5f9dd Use purple_conversation_extended_menu to add items in the conversation
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 17275
diff changeset
1876 return menuitem;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1877 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1878
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1879 typedef struct
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1880 {
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1881 GtkWidget *entry;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1882 GtkWidget *accountopt;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1883
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1884 PidginFilterBuddyCompletionEntryFunc filter_func;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1885 gpointer filter_func_user_data;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1886
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1887 GtkListStore *store;
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
1888 } PidginCompletionData;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1889
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1890 static gboolean buddyname_completion_match_func(GtkEntryCompletion *completion,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1891 const gchar *key, GtkTreeIter *iter, gpointer user_data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1892 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1893 GtkTreeModel *model;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1894 GValue val1;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1895 GValue val2;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1896 const char *tmp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1897
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1898 model = gtk_entry_completion_get_model (completion);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1899
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1900 val1.g_type = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1901 gtk_tree_model_get_value(model, iter, 2, &val1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1902 tmp = g_value_get_string(&val1);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1903 if (tmp != NULL && purple_str_has_prefix(tmp, key))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1904 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1905 g_value_unset(&val1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1906 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1907 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1908 g_value_unset(&val1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1909
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1910 val2.g_type = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1911 gtk_tree_model_get_value(model, iter, 3, &val2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1912 tmp = g_value_get_string(&val2);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1913 if (tmp != NULL && purple_str_has_prefix(tmp, key))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1914 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1915 g_value_unset(&val2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1916 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1917 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1918 g_value_unset(&val2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1919
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1920 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1921 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1922
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1923 static gboolean buddyname_completion_match_selected_cb(GtkEntryCompletion *completion,
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1924 GtkTreeModel *model, GtkTreeIter *iter, PidginCompletionData *data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1925 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1926 GValue val;
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1927 GtkWidget *optmenu = data->accountopt;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
1928 PurpleAccount *account;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1929
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1930 val.g_type = 0;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1931 gtk_tree_model_get_value(model, iter, 1, &val);
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
1932 gtk_entry_set_text(GTK_ENTRY(data->entry), g_value_get_string(&val));
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1933 g_value_unset(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1934
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1935 gtk_tree_model_get_value(model, iter, 4, &val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1936 account = g_value_get_pointer(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1937 g_value_unset(&val);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1938
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1939 if (account == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1940 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1941
17132
7ca09df1ea55 aop_menu branch
Gabriel Schulhof <nix@go-nix.ca>
parents: 17084
diff changeset
1942 if (optmenu != NULL)
17410
fe8a1051aa0a Casting things to gpointer isn't useful, unless they were previously const.
Richard Laager <rlaager@wiktel.com>
parents: 17225
diff changeset
1943 aop_option_menu_select_by_data(optmenu, account);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1944
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1945 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1946 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1947
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1948 static void
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1949 add_buddyname_autocomplete_entry(GtkListStore *store, const char *buddy_alias, const char *contact_alias,
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1950 const PurpleAccount *account, const char *buddyname)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1951 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1952 GtkTreeIter iter;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1953 gboolean completion_added = FALSE;
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1954 gchar *normalized_buddyname;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1955 gchar *tmp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1956
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1957 tmp = g_utf8_normalize(buddyname, -1, G_NORMALIZE_DEFAULT);
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1958 normalized_buddyname = g_utf8_casefold(tmp, -1);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1959 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1960
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1961 /* There's no sense listing things like: 'xxx "xxx"'
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1962 when the name and buddy alias match. */
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1963 if (buddy_alias && strcmp(buddy_alias, buddyname)) {
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1964 char *completion_entry = g_strdup_printf("%s \"%s\"", buddyname, buddy_alias);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1965 char *tmp2 = g_utf8_normalize(buddy_alias, -1, G_NORMALIZE_DEFAULT);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1966
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1967 tmp = g_utf8_casefold(tmp2, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1968 g_free(tmp2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1969
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1970 gtk_list_store_append(store, &iter);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1971 gtk_list_store_set(store, &iter,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1972 0, completion_entry,
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1973 1, buddyname,
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1974 2, normalized_buddyname,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1975 3, tmp,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1976 4, account,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1977 -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1978 g_free(completion_entry);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1979 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1980 completion_added = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1981 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1982
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1983 /* There's no sense listing things like: 'xxx "xxx"'
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1984 when the name and contact alias match. */
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1985 if (contact_alias && strcmp(contact_alias, buddyname)) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1986 /* We don't want duplicates when the contact and buddy alias match. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1987 if (!buddy_alias || strcmp(contact_alias, buddy_alias)) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1988 char *completion_entry = g_strdup_printf("%s \"%s\"",
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1989 buddyname, contact_alias);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1990 char *tmp2 = g_utf8_normalize(contact_alias, -1, G_NORMALIZE_DEFAULT);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1991
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1992 tmp = g_utf8_casefold(tmp2, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1993 g_free(tmp2);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1994
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1995 gtk_list_store_append(store, &iter);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1996 gtk_list_store_set(store, &iter,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
1997 0, completion_entry,
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1998 1, buddyname,
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
1999 2, normalized_buddyname,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2000 3, tmp,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2001 4, account,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2002 -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2003 g_free(completion_entry);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2004 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2005 completion_added = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2006 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2007 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2008
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2009 if (completion_added == FALSE) {
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2010 /* Add the buddy's name. */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2011 gtk_list_store_append(store, &iter);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2012 gtk_list_store_set(store, &iter,
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2013 0, buddyname,
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2014 1, buddyname,
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2015 2, normalized_buddyname,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2016 3, NULL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2017 4, account,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2018 -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2019 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2020
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2021 g_free(normalized_buddyname);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2022 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2023
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2024 static void get_log_set_name(PurpleLogSet *set, gpointer value, PidginCompletionData *data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2025 {
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2026 PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2027 gpointer user_data = data->filter_func_user_data;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2028
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2029 /* 1. Don't show buddies because we will have gotten them already.
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2030 * 2. The boxes that use this autocomplete code handle only IMs. */
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2031 if (!set->buddy && set->type == PURPLE_LOG_IM) {
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2032 PidginBuddyCompletionEntry entry;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2033 entry.is_buddy = FALSE;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2034 entry.entry.logged_buddy = set;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2035
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2036 if (filter_func(&entry, user_data)) {
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2037 add_buddyname_autocomplete_entry(data->store,
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2038 NULL, NULL, set->account, set->name);
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2039 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2040 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2041 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2042
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2043 static void
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2044 add_completion_list(PidginCompletionData *data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2045 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2046 PurpleBlistNode *gnode, *cnode, *bnode;
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2047 PidginFilterBuddyCompletionEntryFunc filter_func = data->filter_func;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2048 gpointer user_data = data->filter_func_user_data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2049 GHashTable *sets;
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2050
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2051 gtk_list_store_clear(data->store);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2052
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2053 for (gnode = purple_get_blist()->root; gnode != NULL; gnode = gnode->next)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2054 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2055 if (!PURPLE_BLIST_NODE_IS_GROUP(gnode))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2056 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2057
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2058 for (cnode = gnode->child; cnode != NULL; cnode = cnode->next)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2059 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2060 if (!PURPLE_BLIST_NODE_IS_CONTACT(cnode))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2061 continue;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2062
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2063 for (bnode = cnode->child; bnode != NULL; bnode = bnode->next)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2064 {
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2065 PidginBuddyCompletionEntry entry;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2066 entry.is_buddy = TRUE;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2067 entry.entry.buddy = (PurpleBuddy *) bnode;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2068
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2069 if (filter_func(&entry, user_data)) {
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2070 add_buddyname_autocomplete_entry(data->store,
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2071 ((PurpleContact *)cnode)->alias,
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2072 purple_buddy_get_contact_alias(entry.entry.buddy),
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2073 entry.entry.buddy->account,
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2074 entry.entry.buddy->name
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2075 );
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2076 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2077 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2078 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2079 }
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2080
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2081 sets = purple_log_get_log_sets();
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2082 g_hash_table_foreach(sets, (GHFunc)get_log_set_name, data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2083 g_hash_table_destroy(sets);
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2084
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2085 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2086
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2087 static void
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2088 buddyname_autocomplete_destroyed_cb(GtkWidget *widget, gpointer data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2089 {
17822
43da9c881fe9 Unleak a few bytes in the screenname completion code
Stu Tomlinson <stu@nosnilmot.com>
parents: 17732
diff changeset
2090 g_free(data);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2091 purple_signals_disconnect_by_handle(widget);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2092 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2093
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2094 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2095 repopulate_autocomplete(gpointer something, gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2096 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2097 add_completion_list(data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2098 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2099
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2100 void
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2101 pidgin_setup_screenname_autocomplete_with_filter(GtkWidget *entry, GtkWidget *accountopt, PidginFilterBuddyCompletionEntryFunc filter_func, gpointer user_data)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2102 {
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2103 PidginCompletionData *data;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2104
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2105 /*
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2106 * Store the displayed completion value, the buddy name, the UTF-8
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2107 * normalized & casefolded buddy name, the UTF-8 normalized &
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2108 * casefolded value for comparison, and the account.
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2109 */
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2110 GtkListStore *store;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2111
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2112 GtkEntryCompletion *completion;
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2113
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2114 data = g_new0(PidginCompletionData, 1);
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2115 store = gtk_list_store_new(5, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER);
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2116
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2117 data->entry = entry;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2118 data->accountopt = accountopt;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2119 if (filter_func == NULL) {
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2120 data->filter_func = pidgin_screenname_autocomplete_default_filter;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2121 data->filter_func_user_data = NULL;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2122 } else {
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2123 data->filter_func = filter_func;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2124 data->filter_func_user_data = user_data;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2125 }
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2126 data->store = store;
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2127
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2128 add_completion_list(data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2129
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2130 /* Sort the completion list by buddy name */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2131 gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(store),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2132 1, GTK_SORT_ASCENDING);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2133
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2134 completion = gtk_entry_completion_new();
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2135 gtk_entry_completion_set_match_func(completion, buddyname_completion_match_func, NULL, NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2136
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2137 g_signal_connect(G_OBJECT(completion), "match-selected",
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2138 G_CALLBACK(buddyname_completion_match_selected_cb), data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2139
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2140 gtk_entry_set_completion(GTK_ENTRY(entry), completion);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2141 g_object_unref(completion);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2142
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2143 gtk_entry_completion_set_model(completion, GTK_TREE_MODEL(store));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2144 g_object_unref(store);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2145
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2146 gtk_entry_completion_set_text_column(completion, 0);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2147
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2148 purple_signal_connect(purple_connections_get_handle(), "signed-on", entry,
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2149 PURPLE_CALLBACK(repopulate_autocomplete), data);
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2150 purple_signal_connect(purple_connections_get_handle(), "signed-off", entry,
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2151 PURPLE_CALLBACK(repopulate_autocomplete), data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2152
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2153 purple_signal_connect(purple_accounts_get_handle(), "account-added", entry,
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2154 PURPLE_CALLBACK(repopulate_autocomplete), data);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2155 purple_signal_connect(purple_accounts_get_handle(), "account-removed", entry,
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2156 PURPLE_CALLBACK(repopulate_autocomplete), data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2157
25416
6e1967b0f90b Change "screen name" to "username" or "buddy name" in a whole bunch of
Mark Doliner <mark@kingant.net>
parents: 25415
diff changeset
2158 g_signal_connect(G_OBJECT(entry), "destroy", G_CALLBACK(buddyname_autocomplete_destroyed_cb), data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2159 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2160
18667
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2161 gboolean
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2162 pidgin_screenname_autocomplete_default_filter(const PidginBuddyCompletionEntry *completion_entry, gpointer all_accounts) {
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2163 gboolean all = GPOINTER_TO_INT(all_accounts);
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2164
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2165 if (completion_entry->is_buddy) {
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2166 return all || purple_account_is_connected(completion_entry->entry.buddy->account);
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2167 } else {
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2168 return all || (completion_entry->entry.logged_buddy->account != NULL && purple_account_is_connected(completion_entry->entry.logged_buddy->account));
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2169 }
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2170 }
b256b4808a6b Screenname auto-completion filtering by Leonardo Fernandes, Fixes #519
Sean Egan <seanegan@gmail.com>
parents: 18643
diff changeset
2171
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2172 void pidgin_set_cursor(GtkWidget *widget, GdkCursorType cursor_type)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2173 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2174 GdkCursor *cursor;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2175
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2176 g_return_if_fail(widget != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2177 if (widget->window == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2178 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2179
22627
a1202a1aa150 Use the desired cursor, instead of always using GDK_WATCH.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 22544
diff changeset
2180 cursor = gdk_cursor_new(cursor_type);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2181 gdk_window_set_cursor(widget->window, cursor);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2182 gdk_cursor_unref(cursor);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2183
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2184 gdk_display_flush(gdk_drawable_get_display(GDK_DRAWABLE(widget->window)));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2185 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2186
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2187 void pidgin_clear_cursor(GtkWidget *widget)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2188 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2189 g_return_if_fail(widget != NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2190 if (widget->window == NULL)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2191 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2192
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2193 gdk_window_set_cursor(widget->window, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2194 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2195
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2196 struct _icon_chooser {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2197 GtkWidget *icon_filesel;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2198 GtkWidget *icon_preview;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2199 GtkWidget *icon_text;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2200
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2201 void (*callback)(const char*,gpointer);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2202 gpointer data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2203 };
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2204
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2205 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2206 icon_filesel_choose_cb(GtkWidget *widget, gint response, struct _icon_chooser *dialog)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2207 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2208 char *filename, *current_folder;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2209
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2210 if (response != GTK_RESPONSE_ACCEPT) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2211 if (response == GTK_RESPONSE_CANCEL) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2212 gtk_widget_destroy(dialog->icon_filesel);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2213 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2214 dialog->icon_filesel = NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2215 if (dialog->callback)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2216 dialog->callback(NULL, dialog->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2217 g_free(dialog);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2218 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2219 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2220
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2221 filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog->icon_filesel));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2222 current_folder = gtk_file_chooser_get_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2223 if (current_folder != NULL) {
16062
07554cc5d090 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <stu@nosnilmot.com>
parents: 16010
diff changeset
2224 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder", current_folder);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2225 g_free(current_folder);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2226 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2227
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
2228
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2229 if (dialog->callback)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2230 dialog->callback(filename, dialog->data);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2231 gtk_widget_destroy(dialog->icon_filesel);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2232 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2233 g_free(dialog);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2234 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2235
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2236
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2237 static void
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2238 icon_preview_change_cb(GtkFileChooser *widget, struct _icon_chooser *dialog)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2239 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2240 GdkPixbuf *pixbuf, *scale;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2241 int height, width;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2242 char *basename, *markup, *size;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2243 struct stat st;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2244 char *filename;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2245
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2246 filename = gtk_file_chooser_get_preview_filename(
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2247 GTK_FILE_CHOOSER(dialog->icon_filesel));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2248
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
2249 if (!filename || g_stat(filename, &st) || !(pixbuf = pidgin_pixbuf_new_from_file(filename)))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2250 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2251 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2252 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), "");
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2253 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2254 return;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2255 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2256
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2257 width = gdk_pixbuf_get_width(pixbuf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2258 height = gdk_pixbuf_get_height(pixbuf);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2259 basename = g_path_get_basename(filename);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2260 size = purple_str_size_to_units(st.st_size);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2261 markup = g_strdup_printf(_("<b>File:</b> %s\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2262 "<b>File size:</b> %s\n"
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2263 "<b>Image size:</b> %dx%d"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2264 basename, size, width, height);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2265
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2266 scale = gdk_pixbuf_scale_simple(pixbuf, width * 50 / height,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2267 50, GDK_INTERP_BILINEAR);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2268 gtk_image_set_from_pixbuf(GTK_IMAGE(dialog->icon_preview), scale);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2269 gtk_label_set_markup(GTK_LABEL(dialog->icon_text), markup);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2270
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2271 g_object_unref(G_OBJECT(pixbuf));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2272 g_object_unref(G_OBJECT(scale));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2273 g_free(filename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2274 g_free(basename);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2275 g_free(size);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2276 g_free(markup);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2277 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2278
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2279
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2280 GtkWidget *pidgin_buddy_icon_chooser_new(GtkWindow *parent, void(*callback)(const char *, gpointer), gpointer data) {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2281 struct _icon_chooser *dialog = g_new0(struct _icon_chooser, 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2282
17001
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2283 GtkWidget *vbox;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2284 const char *current_folder;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2285
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2286 dialog->callback = callback;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2287 dialog->data = data;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2288
16062
07554cc5d090 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <stu@nosnilmot.com>
parents: 16010
diff changeset
2289 current_folder = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/filelocations/last_icon_folder");
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2290
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2291 dialog->icon_filesel = gtk_file_chooser_dialog_new(_("Buddy Icon"),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2292 parent,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2293 GTK_FILE_CHOOSER_ACTION_OPEN,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2294 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2295 GTK_STOCK_OPEN, GTK_RESPONSE_ACCEPT,
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2296 NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2297 gtk_dialog_set_default_response(GTK_DIALOG(dialog->icon_filesel), GTK_RESPONSE_ACCEPT);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2298 if ((current_folder != NULL) && (*current_folder != '\0'))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2299 gtk_file_chooser_set_current_folder(GTK_FILE_CHOOSER(dialog->icon_filesel),
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2300 current_folder);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2301
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2302 dialog->icon_preview = gtk_image_new();
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2303 dialog->icon_text = gtk_label_new(NULL);
17001
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2304
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2305 vbox = gtk_vbox_new(FALSE, PIDGIN_HIG_BOX_SPACE);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2306 gtk_widget_set_size_request(GTK_WIDGET(vbox), -1, 50);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2307 gtk_box_pack_start(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_preview), TRUE, FALSE, 0);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2308 gtk_box_pack_end(GTK_BOX(vbox), GTK_WIDGET(dialog->icon_text), FALSE, FALSE, 0);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2309 gtk_widget_show_all(vbox);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2310
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2311 gtk_file_chooser_set_preview_widget(GTK_FILE_CHOOSER(dialog->icon_filesel), vbox);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2312 gtk_file_chooser_set_preview_widget_active(GTK_FILE_CHOOSER(dialog->icon_filesel), TRUE);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2313 gtk_file_chooser_set_use_preview_label(GTK_FILE_CHOOSER(dialog->icon_filesel), FALSE);
9adc82b72216 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 <daniel.atallah@gmail.com>
parents: 16993
diff changeset
2314
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2315 g_signal_connect(G_OBJECT(dialog->icon_filesel), "update-preview",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2316 G_CALLBACK(icon_preview_change_cb), dialog);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2317 g_signal_connect(G_OBJECT(dialog->icon_filesel), "response",
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2318 G_CALLBACK(icon_filesel_choose_cb), dialog);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2319 icon_preview_change_cb(NULL, dialog);
21755
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2320
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2321 #ifdef _WIN32
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2322 g_signal_connect(G_OBJECT(dialog->icon_filesel), "show",
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2323 G_CALLBACK(winpidgin_ensure_onscreen), dialog->icon_filesel);
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2324 #endif
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2325
5b0d9e08992d Make sure that the buddy icon file chooser dialog appears onscreen on windows. Fixes #4065.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 21560
diff changeset
2326 return dialog->icon_filesel;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2327 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2328
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2329 /**
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2330 * @return True if any string from array a exists in array b.
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2331 */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2332 static gboolean
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2333 str_array_match(char **a, char **b)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2334 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2335 int i, j;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2336
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2337 if (!a || !b)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2338 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2339 for (i = 0; a[i] != NULL; i++)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2340 for (j = 0; b[j] != NULL; j++)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2341 if (!g_ascii_strcasecmp(a[i], b[j]))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2342 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2343 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2344 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2345
16381
72dc611f3257 Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@wiktel.com>
parents: 16375
diff changeset
2346 gpointer
72dc611f3257 Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@wiktel.com>
parents: 16375
diff changeset
2347 pidgin_convert_buddy_icon(PurplePlugin *plugin, const char *path, size_t *len)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2348 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2349 PurplePluginProtocolInfo *prpl_info;
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2350 PurpleBuddyIconSpec *spec;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2351 int orig_width, orig_height, new_width, new_height;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2352 GdkPixbufFormat *format;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2353 char **pixbuf_formats;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2354 char **prpl_formats;
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2355 GError *error = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2356 gchar *contents;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2357 gsize length;
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2358 GdkPixbuf *pixbuf, *original;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2359 float scale_factor;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2360 int i;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2361 gchar *tmp;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2362
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2363 prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2364 spec = &prpl_info->icon_spec;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2365 g_return_val_if_fail(spec->format != NULL, NULL);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2366
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2367 format = gdk_pixbuf_get_file_info(path, &orig_width, &orig_height);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2368 if (format == NULL) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2369 purple_debug_warning("buddyicon", "Could not get file info of %s\n", path);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2370 return NULL;
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2371 }
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2372
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2373 pixbuf_formats = gdk_pixbuf_format_get_extensions(format);
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2374 prpl_formats = g_strsplit(spec->format, ",", 0);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2375
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2376 if (str_array_match(pixbuf_formats, prpl_formats) && /* This is an acceptable format AND */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2377 (!(spec->scale_rules & PURPLE_ICON_SCALE_SEND) || /* The prpl doesn't scale before it sends OR */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2378 (spec->min_width <= orig_width && spec->max_width >= orig_width &&
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2379 spec->min_height <= orig_height && spec->max_height >= orig_height))) /* The icon is the correct size */
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2380 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2381 g_strfreev(pixbuf_formats);
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
2382
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2383 if (!g_file_get_contents(path, &contents, &length, &error)) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2384 purple_debug_warning("buddyicon", "Could not get file contents "
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2385 "of %s: %s\n", path, error->message);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2386 g_strfreev(prpl_formats);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2387 return NULL;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2388 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2389
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2390 if (spec->max_filesize == 0 || length < spec->max_filesize) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2391 /* The supplied image fits the file size, dimensions and type
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2392 constraints. Great! Return it without making any changes. */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2393 if (len)
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2394 *len = length;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2395 g_strfreev(prpl_formats);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2396 return contents;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2397 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2398
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2399 /* The image was too big. Fall-through and try scaling it down. */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2400 g_free(contents);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2401 } else {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2402 g_strfreev(pixbuf_formats);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2403 }
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2404
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2405 /* The original image wasn't compatible. Scale it or convert file type. */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2406 pixbuf = gdk_pixbuf_new_from_file(path, &error);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2407 if (error) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2408 purple_debug_warning("buddyicon", "Could not open icon '%s' for "
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2409 "conversion: %s\n", path, error->message);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2410 g_error_free(error);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2411 g_strfreev(prpl_formats);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2412 return NULL;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2413 }
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2414 original = g_object_ref(G_OBJECT(pixbuf));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2415
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2416 new_width = orig_width;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2417 new_height = orig_height;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2418
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2419 /* Make sure the image is the correct dimensions */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2420 if (spec->scale_rules & PURPLE_ICON_SCALE_SEND &&
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2421 (orig_width < spec->min_width || orig_width > spec->max_width ||
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2422 orig_height < spec->min_height || orig_height > spec->max_height))
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2423 {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2424 purple_buddy_icon_get_scale_size(spec, &new_width, &new_height);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2425
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2426 g_object_unref(G_OBJECT(pixbuf));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2427 pixbuf = gdk_pixbuf_scale_simple(original, new_width, new_height, GDK_INTERP_HYPER);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2428 }
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2429
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2430 scale_factor = 1;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2431 do {
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2432 for (i = 0; prpl_formats[i]; i++) {
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2433 int quality = 100;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2434 do {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2435 const char *key = NULL;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2436 const char *value = NULL;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2437 gchar tmp_buf[4];
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2438
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2439 purple_debug_info("buddyicon", "Converting buddy icon to %s\n", prpl_formats[i]);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2440
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2441 if (g_str_equal(prpl_formats[i], "png")) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2442 key = "compression";
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2443 value = "9";
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2444 } else if (g_str_equal(prpl_formats[i], "jpeg")) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2445 sprintf(tmp_buf, "%u", quality);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2446 key = "quality";
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2447 value = tmp_buf;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2448 }
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2449
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2450 if (!gdk_pixbuf_save_to_buffer(pixbuf, &contents, &length,
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2451 prpl_formats[i], &error, key, value, NULL))
30047
cfa57a2cd9d1 Use gdk_pixbuf_save_to_buffer() instead of gdk_pixbuf_save() to avoid saving
Mark Doliner <mark@kingant.net>
parents: 30018
diff changeset
2452 {
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2453 /* The NULL checking of error is necessary due to this bug:
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2454 * http://bugzilla.gnome.org/show_bug.cgi?id=405539 */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2455 purple_debug_warning("buddyicon",
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2456 "Could not convert to %s: %s\n", prpl_formats[i],
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2457 (error && error->message) ? error->message : "Unknown error");
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2458 g_error_free(error);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2459 error = NULL;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2460
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2461 /* We couldn't convert to this image type. Try the next
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2462 image type. */
15584
d91aed154695 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 <daniel.atallah@gmail.com>
parents: 15574
diff changeset
2463 break;
d91aed154695 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 <daniel.atallah@gmail.com>
parents: 15574
diff changeset
2464 }
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2465
30182
9e9c20b705d3 Allow icons to be exactly the max file size
Mark Doliner <mark@kingant.net>
parents: 30181
diff changeset
2466 if (spec->max_filesize == 0 || length <= spec->max_filesize) {
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2467 /* We were able to save the image as this image type and
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2468 have it be within the size constraints. Great! Return
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2469 the image. */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2470 purple_debug_info("buddyicon", "Converted image from "
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2471 "%dx%d to %dx%d, format=%s, quality=%u, "
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2472 "filesize=%zu\n", orig_width, orig_height,
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2473 new_width, new_height, prpl_formats[i], quality,
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2474 length);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2475 if (len)
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2476 *len = length;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2477 g_strfreev(prpl_formats);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2478 g_object_unref(G_OBJECT(pixbuf));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2479 g_object_unref(G_OBJECT(original));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2480 return contents;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2481 }
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2482
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2483 g_free(contents);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2484
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2485 if (!g_str_equal(prpl_formats[i], "jpeg")) {
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2486 /* File size was too big and we can't lower the quality,
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2487 so skip to the next image type. */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2488 break;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2489 }
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2490
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2491 /* File size was too big, but we're dealing with jpeg so try
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2492 lowering the quality. */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2493 quality -= 5;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2494 } while (quality >= 70);
16381
72dc611f3257 Fix the custom icon stuff, and various memory leaks. At this point, custom
Richard Laager <rlaager@wiktel.com>
parents: 16375
diff changeset
2495 }
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2496
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2497 /* We couldn't save the image in any format that was below the max
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2498 file size. Maybe we can reduce the image dimensions? */
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2499 scale_factor *= 0.8;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2500 new_width = orig_width * scale_factor;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2501 new_height = orig_height * scale_factor;
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2502 g_object_unref(G_OBJECT(pixbuf));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2503 pixbuf = gdk_pixbuf_scale_simple(original, new_width, new_height, GDK_INTERP_HYPER);
30181
1a4362fca50e Oh! When setting a buddy icon, when we reduce the dimension in order to
Mark Doliner <mark@kingant.net>
parents: 30134
diff changeset
2504 } while ((new_width > 10 || new_height > 10) && new_width > spec->min_width && new_height > spec->min_height);
30051
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2505 g_strfreev(prpl_formats);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2506 g_object_unref(G_OBJECT(pixbuf));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2507 g_object_unref(G_OBJECT(original));
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2508
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2509 tmp = g_strdup_printf(_("The file '%s' is too large for %s. Please try a smaller image.\n"),
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2510 path, plugin->info->name);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2511 purple_notify_error(NULL, _("Icon Error"), _("Could not set icon"), tmp);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2512 g_free(tmp);
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2513
3b24193663bc Change pidgin_convert_buddy_icon() to be more accommodating when attempting
Mark Doliner <mark@kingant.net>
parents: 30048
diff changeset
2514 return NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2515 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2516
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2517 char *pidgin_make_pretty_arrows(const char *str)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2518 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2519 char *ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2520 char **split = g_strsplit(str, "->", -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2521 ret = g_strjoinv("\342\207\250", split);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2522 g_strfreev(split);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2523
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2524 split = g_strsplit(ret, "<-", -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2525 g_free(ret);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2526 ret = g_strjoinv("\342\207\246", split);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2527 g_strfreev(split);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2528
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2529 return ret;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2530 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2531
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2532 void pidgin_set_urgent(GtkWindow *window, gboolean urgent)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2533 {
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
2534 #if defined _WIN32
15515
75ffc646647f Win32 de-gaimification of pidgin
Daniel Atallah <daniel.atallah@gmail.com>
parents: 15507
diff changeset
2535 winpidgin_window_flash(window, urgent);
21029
3a12f08b2185 Guard this X stuff so it's only compiled if GDK_WINDOWING_X11 is defined.
Stu Tomlinson <stu@nosnilmot.com>
parents: 20349
diff changeset
2536 #else
29482
886a0dfaa625 I screwed up the logic here and didn't realize it earlier.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 29481
diff changeset
2537 gtk_window_set_urgency_hint(window, urgent);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2538 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2539 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2540
26736
4a3a0c47dfe1 Hide the list of minidialogs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 26726
diff changeset
2541 static GSList *minidialogs = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2542
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2543 static void *
22007
c38d72677c8a Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@wiktel.com>
parents: 21894
diff changeset
2544 pidgin_utils_get_handle(void)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2545 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2546 static int handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2547
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2548 return &handle;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2549 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2550
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2551 static void connection_signed_off_cb(PurpleConnection *gc)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2552 {
22544
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2553 GSList *list, *l_next;
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2554 for (list = minidialogs; list; list = l_next) {
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2555 l_next = list->next;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2556 if (g_object_get_data(G_OBJECT(list->data), "gc") == gc) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2557 gtk_widget_destroy(GTK_WIDGET(list->data));
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2558 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2559 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2560 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2561
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2562 static void alert_killed_cb(GtkWidget *widget)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2563 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2564 minidialogs = g_slist_remove(minidialogs, widget);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2565 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2566
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2567 struct _old_button_clicked_cb_data
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2568 {
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2569 PidginUtilMiniDialogCallback cb;
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2570 gpointer data;
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2571 };
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2572
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2573 static void
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2574 old_mini_dialog_button_clicked_cb(PidginMiniDialog *mini_dialog,
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2575 GtkButton *button,
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2576 gpointer user_data)
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2577 {
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2578 struct _old_button_clicked_cb_data *data = user_data;
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2579 data->cb(data->data, button);
21405
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2580 }
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2581
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2582 static void
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2583 old_mini_dialog_destroy_cb(GtkWidget *dialog,
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2584 GList *cb_datas)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2585 {
21405
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2586 while (cb_datas != NULL)
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2587 {
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2588 g_free(cb_datas->data);
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2589 cb_datas = g_list_delete_link(cb_datas, cb_datas);
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2590 }
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2591 }
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2592
30791
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2593 static void
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2594 mini_dialog_init(PidginMiniDialog *mini_dialog, PurpleConnection *gc, void *user_data, va_list args)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2595 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2596 const char *button_text;
21405
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2597 GList *cb_datas = NULL;
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2598 static gboolean first_call = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2599
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2600 if (first_call) {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2601 first_call = FALSE;
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2602 purple_signal_connect(purple_connections_get_handle(), "signed-off",
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2603 pidgin_utils_get_handle(),
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2604 PURPLE_CALLBACK(connection_signed_off_cb), NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2605 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2606
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2607 g_object_set_data(G_OBJECT(mini_dialog), "gc" ,gc);
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2608 g_signal_connect(G_OBJECT(mini_dialog), "destroy",
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2609 G_CALLBACK(alert_killed_cb), NULL);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2610
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2611 while ((button_text = va_arg(args, char*))) {
22544
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2612 struct _old_button_clicked_cb_data *data = NULL;
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2613 PidginMiniDialogCallback wrapper_cb = NULL;
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2614 PidginUtilMiniDialogCallback callback =
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2615 va_arg(args, PidginUtilMiniDialogCallback);
22544
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2616
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2617 if (callback != NULL) {
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2618 data = g_new0(struct _old_button_clicked_cb_data, 1);
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2619 data->cb = callback;
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2620 data->data = user_data;
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2621 wrapper_cb = old_mini_dialog_button_clicked_cb;
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2622 }
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2623 pidgin_mini_dialog_add_button(mini_dialog, button_text,
22544
387024e316d1 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 <daniel.atallah@gmail.com>
parents: 22492
diff changeset
2624 wrapper_cb, data);
21405
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2625 cb_datas = g_list_append(cb_datas, data);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2626 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2627
21405
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2628 g_signal_connect(G_OBJECT(mini_dialog), "destroy",
7ea1f93cffe2 Don't leak all bar one of the closure structs allocated by
Will Thompson <will.thompson@collabora.co.uk>
parents: 21402
diff changeset
2629 G_CALLBACK(old_mini_dialog_destroy_cb), cb_datas);
30791
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2630 }
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2631
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2632 #define INIT_AND_RETURN_MINI_DIALOG(mini_dialog) \
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2633 va_list args; \
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2634 va_start(args, user_data); \
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2635 mini_dialog_init(mini_dialog, gc, user_data, args); \
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2636 va_end(args); \
21402
9fef5d307a27 Create a PidginMiniDialog widget; make pidgin_make_mini_dialog() in gtkutils.c
Will Thompson <will.thompson@collabora.co.uk>
parents: 21399
diff changeset
2637 return GTK_WIDGET(mini_dialog);
30791
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2638
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2639 GtkWidget *
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2640 pidgin_make_mini_dialog(PurpleConnection *gc,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2641 const char *icon_name,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2642 const char *primary,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2643 const char *secondary,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2644 void *user_data,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2645 ...)
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2646 {
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2647 PidginMiniDialog *mini_dialog = pidgin_mini_dialog_new(primary, secondary, icon_name);
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2648 INIT_AND_RETURN_MINI_DIALOG(mini_dialog);
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2649 }
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2650
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2651 GtkWidget *
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2652 pidgin_make_mini_dialog_with_custom_icon(PurpleConnection *gc,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2653 GdkPixbuf *custom_icon,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2654 const char *primary,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2655 const char *secondary,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2656 void *user_data,
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2657 ...)
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2658 {
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2659 PidginMiniDialog *mini_dialog = pidgin_mini_dialog_new_with_custom_icon(primary, secondary, custom_icon);
c62fac7ada0d Display the protocol icon for the authorization request dialog
ivan.komarov@soc.pidgin.im
parents: 30182
diff changeset
2660 INIT_AND_RETURN_MINI_DIALOG(mini_dialog);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2661 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2662
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2663 /*
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2664 * "This is so dead sexy."
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2665 * "Two thumbs up."
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2666 * "Best movie of the year."
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2667 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2668 * This is the function that handles CTRL+F searching in the buddy list.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2669 * It finds the top-most buddy/group/chat/whatever containing the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2670 * entered string.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2671 *
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2672 * It's somewhat ineffecient, because we strip all the HTML from the
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2673 * "name" column of the buddy list (because the GtkTreeModel does not
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2674 * contain the screen name in a non-markedup format). But the alternative
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2675 * is to add an extra column to the GtkTreeModel. And this function is
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2676 * used rarely, so it shouldn't matter TOO much.
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2677 */
15501
d75099d2567e gaim_gtk to pidgin. I hope
Sean Egan <seanegan@gmail.com>
parents: 15445
diff changeset
2678 gboolean pidgin_tree_view_search_equal_func(GtkTreeModel *model, gint column,
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2679 const gchar *key, GtkTreeIter *iter, gpointer data)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2680 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2681 gchar *enteredstring;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2682 gchar *tmp;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2683 gchar *withmarkup;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2684 gchar *nomarkup;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2685 gchar *normalized;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2686 gboolean result;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2687 size_t i;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2688 size_t len;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2689 PangoLogAttr *log_attrs;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2690 gchar *word;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2691
17095
7ade887fd3f6 Replace strcasecmp() calls with glib equivalents.
Richard Laager <rlaager@wiktel.com>
parents: 17084
diff changeset
2692 if (g_ascii_strcasecmp(key, "Global Thermonuclear War") == 0)
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2693 {
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2694 purple_notify_info(NULL, "WOPR",
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2695 "Wouldn't you prefer a nice game of chess?", NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2696 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2697 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2698
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2699 gtk_tree_model_get(model, iter, column, &withmarkup, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2700 if (withmarkup == NULL) /* This is probably a separator */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2701 return TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2702
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2703 tmp = g_utf8_normalize(key, -1, G_NORMALIZE_DEFAULT);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2704 enteredstring = g_utf8_casefold(tmp, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2705 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2706
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2707 nomarkup = purple_markup_strip_html(withmarkup);
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2708 tmp = g_utf8_normalize(nomarkup, -1, G_NORMALIZE_DEFAULT);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2709 g_free(nomarkup);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2710 normalized = g_utf8_casefold(tmp, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2711 g_free(tmp);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2712
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2713 if (purple_str_has_prefix(normalized, enteredstring))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2714 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2715 g_free(withmarkup);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2716 g_free(enteredstring);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2717 g_free(normalized);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2718 return FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2719 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2720
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2721
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2722 /* Use Pango to separate by words. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2723 len = g_utf8_strlen(normalized, -1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2724 log_attrs = g_new(PangoLogAttr, len + 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2725
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2726 pango_get_log_attrs(normalized, strlen(normalized), -1, NULL, log_attrs, len + 1);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2727
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2728 word = normalized;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2729 result = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2730 for (i = 0; i < (len - 1) ; i++)
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2731 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2732 if (log_attrs[i].is_word_start &&
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2733 purple_str_has_prefix(word, enteredstring))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2734 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2735 result = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2736 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2737 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2738 word = g_utf8_next_char(word);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2739 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2740 g_free(log_attrs);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2741
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2742 /* The non-Pango version. */
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2743 #if 0
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2744 word = normalized;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2745 result = TRUE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2746 while (word[0] != '\0')
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2747 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2748 gunichar c = g_utf8_get_char(word);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2749 if (!g_unichar_isalnum(c))
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2750 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2751 word = g_utf8_find_next_char(word, NULL);
15823
32c366eeeb99 sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@gmail.com>
parents: 15822
diff changeset
2752 if (purple_str_has_prefix(word, enteredstring))
15374
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2753 {
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2754 result = FALSE;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2755 break;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2756 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2757 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2758 else
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2759 word = g_utf8_find_next_char(word, NULL);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2760 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2761 #endif
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2762
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2763 g_free(withmarkup);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2764 g_free(enteredstring);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2765 g_free(normalized);
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2766
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2767 return result;
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2768 }
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2769
5fe8042783c1 Rename gtk/ and libgaim/ to pidgin/ and libpurple/
Sean Egan <seanegan@gmail.com>
parents:
diff changeset
2770
15507
311315e979f7 gtkutils changes
Sean Egan <seanegan@gmail.com>
parents: 15501
diff changeset
2771 gboolean pidgin_gdk_pixbuf_is_opaque(GdkPixbuf *pixbuf) {
30863
351d07aefb09 Kill off many dead assignments and any useless remaining variables.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30862
diff changeset
2772 int height, rowstride, i;
30862
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2773 unsigned char *pixels;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2774 unsigned char *row;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2775
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2776 if (!gdk_pixbuf_get_has_alpha(pixbuf))
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2777 return TRUE;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2778
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2779 height = gdk_pixbuf_get_height (pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2780 rowstride = gdk_pixbuf_get_rowstride (pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2781 pixels = gdk_pixbuf_get_pixels (pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2782
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2783 row = pixels;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2784 for (i = 3; i < rowstride; i+=4) {
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2785 if (row[i] < 0xfe)
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2786 return FALSE;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2787 }
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2788
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2789 for (i = 1; i < height - 1; i++) {
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2790 row = pixels + (i * rowstride);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2791 if (row[3] < 0xfe || row[rowstride - 1] < 0xfe) {
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2792 return FALSE;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2793 }
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2794 }
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2795
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2796 row = pixels + ((height - 1) * rowstride);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2797 for (i = 3; i < rowstride; i += 4) {
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2798 if (row[i] < 0xfe)
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2799 return FALSE;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2800 }
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2801
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2802 return TRUE;
15413
e6b40365930c More statusbox tweaks:
Sean Egan <seanegan@gmail.com>
parents: 15381
diff changeset
2803 }
e6b40365930c More statusbox tweaks:
Sean Egan <seanegan@gmail.com>
parents: 15381
diff changeset
2804
18212
77b9ceb83426 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@gmail.com>
parents: 18166
diff changeset
2805 void pidgin_gdk_pixbuf_make_round(GdkPixbuf *pixbuf) {
77b9ceb83426 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@gmail.com>
parents: 18166
diff changeset
2806 int width, height, rowstride;
30862
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2807 guchar *pixels;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2808 if (!gdk_pixbuf_get_has_alpha(pixbuf))
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2809 return;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2810 width = gdk_pixbuf_get_width(pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2811 height = gdk_pixbuf_get_height(pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2812 rowstride = gdk_pixbuf_get_rowstride(pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2813 pixels = gdk_pixbuf_get_pixels(pixbuf);
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2814
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2815 if (width < 6 || height < 6)
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2816 return;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2817 /* Top left */
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2818 pixels[3] = 0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2819 pixels[7] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2820 pixels[11] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2821 pixels[rowstride + 3] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2822 pixels[rowstride * 2 + 3] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2823
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2824 /* Top right */
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2825 pixels[width * 4 - 1] = 0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2826 pixels[width * 4 - 5] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2827 pixels[width * 4 - 9] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2828 pixels[rowstride + (width * 4) - 1] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2829 pixels[(2 * rowstride) + (width * 4) - 1] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2830
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2831 /* Bottom left */
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2832 pixels[(height - 1) * rowstride + 3] = 0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2833 pixels[(height - 1) * rowstride + 7] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2834 pixels[(height - 1) * rowstride + 11] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2835 pixels[(height - 2) * rowstride + 3] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2836 pixels[(height - 3) * rowstride + 3] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2837
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2838 /* Bottom right */
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2839 pixels[height * rowstride - 1] = 0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2840 pixels[(height - 1) * rowstride - 1] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2841 pixels[(height - 2) * rowstride - 1] = 0xC0;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2842 pixels[height * rowstride - 5] = 0x80;
922c8c553758 Space-to-tab.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30849
diff changeset
2843 pixels[height * rowstride - 9] = 0xC0;
18212
77b9ceb83426 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@gmail.com>
parents: 18166
diff changeset
2844 }
77b9ceb83426 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@gmail.com>
parents: 18166
diff changeset
2845
18215
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2846 const char *pidgin_get_dim_grey_string(GtkWidget *widget) {
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2847 static char dim_grey_string[8] = "";
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2848 GtkStyle *style;
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2849
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2850 if (!widget)
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2851 return "dim grey";
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2852
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2853 style = gtk_widget_get_style(widget);
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2854 if (!style)
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2855 return "dim grey";
25415
584063555949 Remove trailing whitespace
Mark Doliner <mark@kingant.net>
parents: 25372
diff changeset
2856
18215
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2857 snprintf(dim_grey_string, sizeof(dim_grey_string), "#%02x%02x%02x",
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2858 style->text_aa[GTK_STATE_NORMAL].red >> 8,
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2859 style->text_aa[GTK_STATE_NORMAL].green >> 8,
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2860 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2861 return dim_grey_string;
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2862 }
16bf31872b7a Chat topics in status line of chat infopanes
Sean Egan <seanegan@gmail.com>
parents: 18212
diff changeset
2863
20028
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2864 static void
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2865 combo_box_changed_cb(GtkComboBox *combo_box, GtkEntry *entry)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2866 {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2867 char *text = gtk_combo_box_get_active_text(combo_box);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2868 gtk_entry_set_text(entry, text ? text : "");
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2869 g_free(text);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2870 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2871
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2872 static gboolean
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2873 entry_key_pressed_cb(GtkWidget *entry, GdkEventKey *key, GtkComboBox *combo)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2874 {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2875 if (key->keyval == GDK_Down || key->keyval == GDK_Up) {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2876 gtk_combo_box_popup(combo);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2877 return TRUE;
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2878 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2879 return FALSE;
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2880 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2881
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2882 GtkWidget *
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2883 pidgin_text_combo_box_entry_new(const char *default_item, GList *items)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2884 {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2885 GtkComboBox *ret = NULL;
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2886 GtkWidget *the_entry = NULL;
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2887
31626
3cec1e97e698 Modify the editable comboboxes to be more friendly to GTK+ themes that don't
hugo@oxygen-icons.org
parents: 31604
diff changeset
2888 ret = GTK_COMBO_BOX(gtk_combo_box_entry_new_text());
20028
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2889 the_entry = gtk_entry_new();
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2890 gtk_container_add(GTK_CONTAINER(ret), the_entry);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2891
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2892 if (default_item)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2893 gtk_entry_set_text(GTK_ENTRY(the_entry), default_item);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2894
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2895 for (; items != NULL ; items = items->next) {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2896 char *text = items->data;
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2897 if (text && *text)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2898 gtk_combo_box_append_text(ret, text);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2899 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2900
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2901 g_signal_connect(G_OBJECT(ret), "changed", (GCallback)combo_box_changed_cb, the_entry);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2902 g_signal_connect_after(G_OBJECT(the_entry), "key-press-event", G_CALLBACK(entry_key_pressed_cb), ret);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2903
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2904 return GTK_WIDGET(ret);
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2905 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2906
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2907 const char *pidgin_text_combo_box_entry_get_text(GtkWidget *widget)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2908 {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2909 return gtk_entry_get_text(GTK_ENTRY(GTK_BIN((widget))->child));
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2910 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2911
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2912 void pidgin_text_combo_box_entry_set_text(GtkWidget *widget, const char *text)
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2913 {
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2914 gtk_entry_set_text(GTK_ENTRY(GTK_BIN((widget))->child), (text));
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2915 }
a2b4eac83902 Part of #1332 to introduce pidgin_text_combo_box_new_entry and
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 19680
diff changeset
2916
21992
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2917 GtkWidget *
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2918 pidgin_add_widget_to_vbox(GtkBox *vbox, const char *widget_label, GtkSizeGroup *sg, GtkWidget *widget, gboolean expand, GtkWidget **p_label)
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2919 {
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2920 GtkWidget *hbox;
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2921 GtkWidget *label = NULL;
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2922
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2923 if (widget_label) {
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2924 hbox = gtk_hbox_new(FALSE, 5);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2925 gtk_widget_show(hbox);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2926 gtk_box_pack_start(vbox, hbox, FALSE, FALSE, 0);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2927
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2928 label = gtk_label_new_with_mnemonic(widget_label);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2929 gtk_widget_show(label);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2930 if (sg) {
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2931 gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2932 gtk_size_group_add_widget(sg, label);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2933 }
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2934 gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2935 } else {
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2936 hbox = GTK_WIDGET(vbox);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2937 }
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2938
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2939 gtk_widget_show(widget);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2940 gtk_box_pack_start(GTK_BOX(hbox), widget, expand, TRUE, 0);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2941 if (label) {
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2942 gtk_label_set_mnemonic_widget(GTK_LABEL(label), widget);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2943 pidgin_set_accessible_label (widget, label);
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2944 }
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2945
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2946 if (p_label)
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2947 (*p_label) = label;
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2948 return hbox;
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2949 }
1690d040addd Remove a lot of duplication from a lot of places. Closes #4558.
Gabriel Schulhof <nix@go-nix.ca>
parents: 21894
diff changeset
2950
21888
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2951 gboolean pidgin_auto_parent_window(GtkWidget *widget)
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2952 {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2953 #if 0
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2954 /* This looks at the most recent window that received focus, and makes
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2955 * that the parent window. */
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2956 #ifndef _WIN32
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2957 static GdkAtom _WindowTime = GDK_NONE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2958 static GdkAtom _Cardinal = GDK_NONE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2959 GList *windows = NULL;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2960 GtkWidget *parent = NULL;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2961 time_t window_time = 0;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2962
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2963 windows = gtk_window_list_toplevels();
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2964
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2965 if (_WindowTime == GDK_NONE) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2966 _WindowTime = gdk_x11_xatom_to_atom(gdk_x11_get_xatom_by_name("_NET_WM_USER_TIME"));
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2967 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2968 if (_Cardinal == GDK_NONE) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2969 _Cardinal = gdk_atom_intern("CARDINAL", FALSE);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2970 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2971
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2972 while (windows) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2973 GtkWidget *window = windows->data;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2974 guchar *data = NULL;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2975 int al = 0;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2976 time_t value;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2977
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2978 windows = g_list_delete_link(windows, windows);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2979
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2980 if (window == widget ||
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2981 !GTK_WIDGET_VISIBLE(window))
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2982 continue;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2983
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2984 if (!gdk_property_get(window->window, _WindowTime, _Cardinal, 0, sizeof(time_t), FALSE,
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2985 NULL, NULL, &al, &data))
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2986 continue;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2987 value = *(time_t *)data;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2988 if (window_time < value) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2989 window_time = value;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2990 parent = window;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2991 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2992 g_free(data);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2993 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2994 if (windows)
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2995 g_list_free(windows);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2996 if (parent) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2997 if (!gtk_get_current_event() && gtk_window_has_toplevel_focus(GTK_WINDOW(parent))) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2998 /* The window is in focus, and the new window was not triggered by a keypress/click
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
2999 * event. So do not set it transient, to avoid focus stealing and all that.
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3000 */
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3001 return FALSE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3002 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3003 gtk_window_set_transient_for(GTK_WINDOW(widget), GTK_WINDOW(parent));
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3004 return TRUE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3005 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3006 return FALSE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3007 #endif
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3008 #else
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3009 /* This finds the currently active window and makes that the parent window. */
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3010 GList *windows = NULL;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3011 GtkWidget *parent = NULL;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3012 GdkEvent *event = gtk_get_current_event();
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3013 GdkWindow *menu = NULL;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3014
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3015 if (event == NULL)
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3016 /* The window was not triggered by a user action. */
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3017 return FALSE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3018
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3019 /* We need to special case events from a popup menu. */
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3020 if (event->type == GDK_BUTTON_RELEASE) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3021 /* XXX: Neither of the following works:
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3022 menu = event->button.window;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3023 menu = gdk_window_get_parent(event->button.window);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3024 menu = gdk_window_get_toplevel(event->button.window);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3025 */
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3026 } else if (event->type == GDK_KEY_PRESS)
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3027 menu = event->key.window;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3028
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3029 windows = gtk_window_list_toplevels();
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3030 while (windows) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3031 GtkWidget *window = windows->data;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3032 windows = g_list_delete_link(windows, windows);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3033
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3034 if (window == widget ||
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3035 !GTK_WIDGET_VISIBLE(window)) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3036 continue;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3037 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3038
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3039 if (gtk_window_has_toplevel_focus(GTK_WINDOW(window)) ||
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3040 (menu && menu == window->window)) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3041 parent = window;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3042 break;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3043 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3044 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3045 if (windows)
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3046 g_list_free(windows);
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3047 if (parent) {
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3048 gtk_window_set_transient_for(GTK_WINDOW(widget), GTK_WINDOW(parent));
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3049 return TRUE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3050 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3051 return FALSE;
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3052 #endif
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3053 }
c88a3f2dbb52 Try to make a window transient for a suitable parent window. This currently
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 21652
diff changeset
3054
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3055 static GObject *pidgin_pixbuf_from_data_helper(const guchar *buf, gsize count, gboolean animated)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3056 {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3057 GObject *pixbuf;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3058 GdkPixbufLoader *loader;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3059 GError *error = NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3060
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3061 loader = gdk_pixbuf_loader_new();
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3062
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3063 if (!gdk_pixbuf_loader_write(loader, buf, count, &error) || error) {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3064 purple_debug_warning("gtkutils", "gdk_pixbuf_loader_write() "
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3065 "failed with size=%zu: %s\n", count,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3066 error ? error->message : "(no error message)");
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3067 if (error)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3068 g_error_free(error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3069 g_object_unref(G_OBJECT(loader));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3070 return NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3071 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3072
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3073 if (!gdk_pixbuf_loader_close(loader, &error) || error) {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3074 purple_debug_warning("gtkutils", "gdk_pixbuf_loader_close() "
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3075 "failed for image of size %zu: %s\n", count,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3076 error ? error->message : "(no error message)");
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3077 if (error)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3078 g_error_free(error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3079 g_object_unref(G_OBJECT(loader));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3080 return NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3081 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3082
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3083 if (animated)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3084 pixbuf = G_OBJECT(gdk_pixbuf_loader_get_animation(loader));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3085 else
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3086 pixbuf = G_OBJECT(gdk_pixbuf_loader_get_pixbuf(loader));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3087 if (!pixbuf) {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3088 purple_debug_warning("gtkutils", "%s() returned NULL for image "
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3089 "of size %zu\n",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3090 animated ? "gdk_pixbuf_loader_get_animation"
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3091 : "gdk_pixbuf_loader_get_pixbuf", count);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3092 g_object_unref(G_OBJECT(loader));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3093 return NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3094 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3095
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3096 g_object_ref(pixbuf);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3097 g_object_unref(G_OBJECT(loader));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3098
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3099 return pixbuf;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3100 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3101
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3102 GdkPixbuf *pidgin_pixbuf_from_data(const guchar *buf, gsize count)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3103 {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3104 return GDK_PIXBUF(pidgin_pixbuf_from_data_helper(buf, count, FALSE));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3105 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3106
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3107 GdkPixbufAnimation *pidgin_pixbuf_anim_from_data(const guchar *buf, gsize count)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3108 {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3109 return GDK_PIXBUF_ANIMATION(pidgin_pixbuf_from_data_helper(buf, count, TRUE));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3110 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3111
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3112 GdkPixbuf *pidgin_pixbuf_from_imgstore(PurpleStoredImage *image)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3113 {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3114 return pidgin_pixbuf_from_data(purple_imgstore_get_data(image),
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3115 purple_imgstore_get_size(image));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3116 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3117
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3118 GdkPixbuf *pidgin_pixbuf_new_from_file(const gchar *filename)
23128
ce984959bda0 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23126
diff changeset
3119 {
ce984959bda0 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23126
diff changeset
3120 GdkPixbuf *pixbuf;
32138
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3121 GError *error = NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3122
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3123 pixbuf = gdk_pixbuf_new_from_file(filename, &error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3124 if (!pixbuf || error) {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3125 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file() "
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3126 "returned %s for file %s: %s\n",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3127 pixbuf ? "something" : "nothing",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3128 filename,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3129 error ? error->message : "(no error message)");
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3130 if (error)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3131 g_error_free(error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3132 if (pixbuf)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3133 g_object_unref(G_OBJECT(pixbuf));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3134 return NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3135 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3136
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3137 return pixbuf;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3138 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3139
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3140 GdkPixbuf *pidgin_pixbuf_new_from_file_at_size(const char *filename, int width, int height)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3141 {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3142 GdkPixbuf *pixbuf;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3143 GError *error = NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3144
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3145 pixbuf = gdk_pixbuf_new_from_file_at_size(filename,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3146 width, height, &error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3147 if (!pixbuf || error) {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3148 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file_at_size() "
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3149 "returned %s for file %s: %s\n",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3150 pixbuf ? "something" : "nothing",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3151 filename,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3152 error ? error->message : "(no error message)");
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3153 if (error)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3154 g_error_free(error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3155 if (pixbuf)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3156 g_object_unref(G_OBJECT(pixbuf));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3157 return NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3158 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3159
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3160 return pixbuf;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3161 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3162
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3163 GdkPixbuf *pidgin_pixbuf_new_from_file_at_scale(const char *filename, int width, int height, gboolean preserve_aspect_ratio)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3164 {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3165 GdkPixbuf *pixbuf;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3166 GError *error = NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3167
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3168 pixbuf = gdk_pixbuf_new_from_file_at_scale(filename,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3169 width, height, preserve_aspect_ratio, &error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3170 if (!pixbuf || error) {
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3171 purple_debug_warning("gtkutils", "gdk_pixbuf_new_from_file_at_scale() "
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3172 "returned %s for file %s: %s\n",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3173 pixbuf ? "something" : "nothing",
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3174 filename,
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3175 error ? error->message : "(no error message)");
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3176 if (error)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3177 g_error_free(error);
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3178 if (pixbuf)
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3179 g_object_unref(G_OBJECT(pixbuf));
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3180 return NULL;
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3181 }
e2c6e4fc3c84 Start looking at the GError parameter every time we call these functions:
Mark Doliner <mark@kingant.net>
parents: 31823
diff changeset
3182
23128
ce984959bda0 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23126
diff changeset
3183 return pixbuf;
ce984959bda0 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23126
diff changeset
3184 }
ce984959bda0 Add a utility function to create a pixbuf from a stored image.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 23126
diff changeset
3185
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3186 static void url_copy(GtkWidget *w, gchar *url)
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3187 {
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3188 GtkClipboard *clipboard;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3189
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3190 clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_PRIMARY);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3191 gtk_clipboard_set_text(clipboard, url, -1);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3192
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3193 clipboard = gtk_widget_get_clipboard(w, GDK_SELECTION_CLIPBOARD);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3194 gtk_clipboard_set_text(clipboard, url, -1);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3195 }
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3196
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3197 static gboolean
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3198 link_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3199 {
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3200 GtkWidget *img, *item;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3201 const char *url;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3202
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3203 url = gtk_imhtml_link_get_url(link);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3204
25336
6d4b56b81871 Fix a comment
Richard Laager <rlaager@wiktel.com>
parents: 24548
diff changeset
3205 /* Open Link */
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3206 img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3207 item = gtk_image_menu_item_new_with_mnemonic(_("_Open Link"));
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3208 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3209 g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3210 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3211
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3212 /* Copy Link Location */
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3213 img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3214 item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Link Location"));
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3215 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3216 g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), (gpointer)url);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3217 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3218
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3219 return TRUE;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3220 }
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3221
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3222 static gboolean
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3223 copy_email_address(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3224 {
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3225 GtkWidget *img, *item;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3226 const char *text;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3227 char *address;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3228 #define MAILTOSIZE (sizeof("mailto:") - 1)
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3229
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3230 text = gtk_imhtml_link_get_url(link);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3231 g_return_val_if_fail(text && strlen(text) > MAILTOSIZE, FALSE);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3232 address = (char*)text + MAILTOSIZE;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3233
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3234 /* Copy Email Address */
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3235 img = gtk_image_new_from_stock(GTK_STOCK_COPY, GTK_ICON_SIZE_MENU);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3236 item = gtk_image_menu_item_new_with_mnemonic(_("_Copy Email Address"));
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3237 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3238 g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(url_copy), address);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3239 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3240
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3241 return TRUE;
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3242 }
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3243
27479
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3244 static void
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3245 file_open_uri(GtkIMHtml *imhtml, const char *uri)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3246 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3247 /* Copied from gtkft.c:open_button_cb */
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3248 #ifdef _WIN32
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3249 /* If using Win32... */
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3250 int code;
32277
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3251 if (purple_str_has_prefix(uri, "file://"))
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3252 {
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3253 gchar *escaped = g_shell_quote(uri);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3254 gchar *param = g_strconcat("/select,\"", uri, "\"", NULL);
32403
7b1cb7651609 Fix parameter types passed to ShellExecuteW(). One of these is just a warning
Daniel Atallah <daniel.atallah@gmail.com>
parents: 32277
diff changeset
3255 wchar_t *wc_param = g_utf8_to_utf16(param, -1, NULL, NULL, NULL);
7b1cb7651609 Fix parameter types passed to ShellExecuteW(). One of these is just a warning
Daniel Atallah <daniel.atallah@gmail.com>
parents: 32277
diff changeset
3256
7b1cb7651609 Fix parameter types passed to ShellExecuteW(). One of these is just a warning
Daniel Atallah <daniel.atallah@gmail.com>
parents: 32277
diff changeset
3257 code = (int)ShellExecuteW(NULL, L"OPEN", L"explorer.exe", wc_param, NULL, SW_NORMAL);
32277
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3258
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3259 g_free(wc_param);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3260 g_free(param);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3261 g_free(escaped);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3262 } else {
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3263 wchar_t *wc_filename = g_utf8_to_utf16(
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3264 uri, -1, NULL, NULL, NULL);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3265
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3266 code = (int)ShellExecuteW(NULL, NULL, wc_filename, NULL, NULL,
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3267 SW_SHOW);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3268
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3269 g_free(wc_filename);
70ff869a74d1 Open an explorer.exe window at the location of the file when clicking
Mark Doliner <mark@kingant.net>
parents: 32138
diff changeset
3270 }
27479
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3271
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3272 if (code == SE_ERR_ASSOCINCOMPLETE || code == SE_ERR_NOASSOC)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3273 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3274 purple_notify_error(imhtml, NULL,
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3275 _("There is no application configured to open this type of file."), NULL);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3276 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3277 else if (code < 32)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3278 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3279 purple_notify_error(imhtml, NULL,
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3280 _("An error occurred while opening the file."), NULL);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3281 purple_debug_warning("gtkutils", "filename: %s; code: %d\n", uri, code);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3282 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3283 #else
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3284 char *command = NULL;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3285 char *tmp = NULL;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3286 GError *error = NULL;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3287
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3288 if (purple_running_gnome())
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3289 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3290 char *escaped = g_shell_quote(uri);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3291 command = g_strdup_printf("gnome-open %s", escaped);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3292 g_free(escaped);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3293 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3294 else if (purple_running_kde())
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3295 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3296 char *escaped = g_shell_quote(uri);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3297
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3298 if (purple_str_has_suffix(uri, ".desktop"))
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3299 command = g_strdup_printf("kfmclient openURL %s 'text/plain'", escaped);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3300 else
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3301 command = g_strdup_printf("kfmclient openURL %s", escaped);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3302 g_free(escaped);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3303 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3304 else
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3305 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3306 purple_notify_uri(NULL, uri);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3307 return;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3308 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3309
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3310 if (purple_program_is_valid(command))
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3311 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3312 gint exit_status;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3313 if (!g_spawn_command_line_sync(command, NULL, NULL, &exit_status, &error))
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3314 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3315 tmp = g_strdup_printf(_("Error launching %s: %s"),
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3316 uri, error->message);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3317 purple_notify_error(imhtml, NULL, _("Unable to open file."), tmp);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3318 g_free(tmp);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3319 g_error_free(error);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3320 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3321 if (exit_status != 0)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3322 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3323 char *primary = g_strdup_printf(_("Error running %s"), command);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3324 char *secondary = g_strdup_printf(_("Process returned error code %d"),
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3325 exit_status);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3326 purple_notify_error(imhtml, NULL, primary, secondary);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3327 g_free(tmp);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3328 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3329 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3330 #endif
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3331 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3332
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3333 #define FILELINKSIZE (sizeof("file://") - 1)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3334 static gboolean
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3335 file_clicked_cb(GtkIMHtml *imhtml, GtkIMHtmlLink *link)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3336 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3337 const char *uri = gtk_imhtml_link_get_url(link) + FILELINKSIZE;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3338 file_open_uri(imhtml, uri);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3339 return TRUE;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3340 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3341
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3342 static gboolean
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3343 open_containing_cb(GtkIMHtml *imhtml, const char *url)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3344 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3345 char *dir = g_path_get_dirname(url + FILELINKSIZE);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3346 file_open_uri(imhtml, dir);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3347 g_free(dir);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3348 return TRUE;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3349 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3350
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3351 static gboolean
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3352 file_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3353 {
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3354 GtkWidget *img, *item;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3355 const char *url;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3356
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3357 url = gtk_imhtml_link_get_url(link);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3358
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3359 /* Open File */
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3360 img = gtk_image_new_from_stock(GTK_STOCK_JUMP_TO, GTK_ICON_SIZE_MENU);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3361 item = gtk_image_menu_item_new_with_mnemonic(_("_Open File"));
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3362 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3363 g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3364 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3365
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3366 /* Open Containing Directory */
27495
e420ce168630 Set the "Open Containing Directory" icon to the "directory" stock icon
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27479
diff changeset
3367 img = gtk_image_new_from_stock(GTK_STOCK_DIRECTORY, GTK_ICON_SIZE_MENU);
27479
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3368 item = gtk_image_menu_item_new_with_mnemonic(_("Open _Containing Directory"));
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3369 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
3370
27479
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3371 g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(open_containing_cb), (gpointer)url);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3372 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3373
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3374 return TRUE;
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3375 }
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3376
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3377 #define AUDIOLINKSIZE (sizeof("audio://") - 1)
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3378 static gboolean
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3379 audio_clicked_cb(GtkIMHtml *imhtml, GtkIMHtmlLink *link)
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3380 {
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3381 const char *uri;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3382 PidginConversation *conv = g_object_get_data(G_OBJECT(imhtml), "gtkconv");
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3383 if (!conv) /* no playback in debug window */
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3384 return TRUE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3385 uri = gtk_imhtml_link_get_url(link) + AUDIOLINKSIZE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3386 purple_sound_play_file(uri, NULL);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3387 return TRUE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3388 }
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3389
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3390 static void
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3391 savefile_write_cb(gpointer user_data, char *file)
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3392 {
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3393 char *temp_file = user_data;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3394 gchar *contents;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3395 gsize length;
28540
5ceac3a20b93 GError needs to be initialized to NULL. I can't help but think that this
Mark Doliner <mark@kingant.net>
parents: 28526
diff changeset
3396 GError *error = NULL;
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3397
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3398 if (!g_file_get_contents(temp_file, &contents, &length, &error)) {
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3399 purple_debug_error("gtkutils", "Unable to read contents of %s: %s\n",
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3400 temp_file, error->message);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3401 g_error_free(error);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3402 return;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3403 }
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3404
27638
a0baa4da3217 Use purple_util_write_data_to_file_absolute. Closes #9688.
Paul Aurich <paul@darkrain42.org>
parents: 27512
diff changeset
3405 if (!purple_util_write_data_to_file_absolute(file, contents, length)) {
a0baa4da3217 Use purple_util_write_data_to_file_absolute. Closes #9688.
Paul Aurich <paul@darkrain42.org>
parents: 27512
diff changeset
3406 purple_debug_error("gtkutils", "Unable to write contents to %s\n",
a0baa4da3217 Use purple_util_write_data_to_file_absolute. Closes #9688.
Paul Aurich <paul@darkrain42.org>
parents: 27512
diff changeset
3407 file);
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3408 }
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3409 }
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3410
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3411 static gboolean
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3412 save_file_cb(GtkWidget *item, const char *url)
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3413 {
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3414 PidginConversation *conv = g_object_get_data(G_OBJECT(item), "gtkconv");
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3415 if (!conv)
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3416 return TRUE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3417 purple_request_file(conv->active_conv, _("Save File"), NULL, TRUE,
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3418 G_CALLBACK(savefile_write_cb), NULL,
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3419 conv->active_conv->account, NULL, conv->active_conv,
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3420 (void *)url);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3421 return TRUE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3422 }
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3423
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3424 static gboolean
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3425 audio_context_menu(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3426 {
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3427 GtkWidget *img, *item;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3428 const char *url;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3429 PidginConversation *conv = g_object_get_data(G_OBJECT(imhtml), "gtkconv");
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3430 if (!conv) /* No menu in debug window */
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3431 return TRUE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3432
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3433 url = gtk_imhtml_link_get_url(link);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3434
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3435 /* Play Sound */
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3436 img = gtk_image_new_from_stock(GTK_STOCK_MEDIA_PLAY, GTK_ICON_SIZE_MENU);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3437 item = gtk_image_menu_item_new_with_mnemonic(_("_Play Sound"));
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3438 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
29481
2dcff225172e Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28306
diff changeset
3439
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3440 g_signal_connect_swapped(G_OBJECT(item), "activate", G_CALLBACK(gtk_imhtml_link_activate), link);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3441 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3442
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3443 /* Save File */
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3444 img = gtk_image_new_from_stock(GTK_STOCK_SAVE, GTK_ICON_SIZE_MENU);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3445 item = gtk_image_menu_item_new_with_mnemonic(_("_Save File"));
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3446 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(item), img);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3447 g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(save_file_cb), (gpointer)(url+AUDIOLINKSIZE));
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3448 g_object_set_data(G_OBJECT(item), "gtkconv", conv);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3449 gtk_menu_shell_append(GTK_MENU_SHELL(menu), item);
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3450
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3451 return TRUE;
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3452 }
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3453
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3454 /* XXX: The following two functions are for demonstration purposes only! */
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3455 static gboolean
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3456 open_dialog(GtkIMHtml *imhtml, GtkIMHtmlLink *link)
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3457 {
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3458 const char *url;
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3459 const char *str;
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3460
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3461 url = gtk_imhtml_link_get_url(link);
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3462 if (!url || strlen(url) < sizeof("open://"))
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3463 return FALSE;
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3464
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3465 str = url + sizeof("open://") - 1;
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3466
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3467 if (strcmp(str, "accounts") == 0)
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3468 pidgin_accounts_window_show();
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3469 else if (strcmp(str, "prefs") == 0)
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3470 pidgin_prefs_show();
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3471 else
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3472 return FALSE;
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3473 return TRUE;
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3474 }
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3475
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3476 static gboolean
24548
284fd17c6020 Clean up some crufts. I think this is now mergeable with .next.minor.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24396
diff changeset
3477 dummy(GtkIMHtml *imhtml, GtkIMHtmlLink *link, GtkWidget *menu)
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3478 {
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3479 return TRUE;
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3480 }
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3481
25351
5dedfe149cb3 Pass only the URL scheme to gtkimhtml and let it add the colon automatically.
Richard Laager <rlaager@wiktel.com>
parents: 25342
diff changeset
3482 static gboolean
25356
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3483 register_gnome_url_handlers(void)
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3484 {
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3485 char *tmp;
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3486 char *err;
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3487 char *c;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3488 char *start;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3489
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3490 tmp = g_find_program_in_path("gconftool-2");
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3491 if (tmp == NULL)
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3492 return FALSE;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3493
26325
0a1f7bff1ddd Apply Paul's second patch to fix some memory leaks found in valgrind.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26317
diff changeset
3494 g_free(tmp);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3495 tmp = NULL;
26325
0a1f7bff1ddd Apply Paul's second patch to fix some memory leaks found in valgrind.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26317
diff changeset
3496
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3497 if (!g_spawn_command_line_sync("gconftool-2 --all-dirs /desktop/gnome/url-handlers",
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3498 &tmp, &err, NULL, NULL))
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3499 {
25356
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3500 g_free(tmp);
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3501 g_free(err);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3502 g_return_val_if_reached(FALSE);
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3503 }
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3504 g_free(err);
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3505 err = NULL;
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3506
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3507 for (c = start = tmp ; *c ; c++)
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3508 {
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3509 /* Skip leading spaces. */
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3510 if (c == start && *c == ' ')
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3511 start = c + 1;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3512 else if (*c == '\n')
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3513 {
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3514 *c = '\0';
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3515 if (g_str_has_prefix(start, "/desktop/gnome/url-handlers/"))
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3516 {
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3517 char *cmd;
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3518 char *tmp2 = NULL;
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3519 char *protocol;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3520
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3521 /* If there is an enabled boolean, honor it. */
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3522 cmd = g_strdup_printf("gconftool-2 -g %s/enabled", start);
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3523 if (g_spawn_command_line_sync(cmd, &tmp2, &err, NULL, NULL))
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3524 {
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3525 g_free(err);
25356
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3526 err = NULL;
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3527 if (!strcmp(tmp2, "false\n"))
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3528 {
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3529 g_free(tmp2);
25356
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3530 g_free(cmd);
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3531 start = c + 1;
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3532 continue;
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3533 }
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3534 }
25356
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3535 g_free(cmd);
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3536 g_free(tmp2);
25342
291b84bf4f8b Finish up the GNOME URL handler code:
Richard Laager <rlaager@wiktel.com>
parents: 25341
diff changeset
3537
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3538 start += sizeof("/desktop/gnome/url-handlers/") - 1;
25353
b6f2c637a3d9 In the GNOME URL registration, ftp, gopher, http, and https are now
Richard Laager <rlaager@wiktel.com>
parents: 25352
diff changeset
3539
25359
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3540 protocol = g_strdup_printf("%s:", start);
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3541 registered_url_handlers = g_slist_prepend(registered_url_handlers, protocol);
25359
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3542 gtk_imhtml_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3543 }
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3544 start = c + 1;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3545 }
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3546 }
25356
726b251cb913 Cleanup the GNOME URL registration code
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 25353
diff changeset
3547 g_free(tmp);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3548
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3549 return (registered_url_handlers != NULL);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3550 }
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3551
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3552 #ifdef _WIN32
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3553 static void
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3554 winpidgin_register_win32_url_handlers(void)
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3555 {
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3556 int idx = 0;
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3557 LONG ret = ERROR_SUCCESS;
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3558
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3559 do {
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3560 DWORD nameSize = 256;
29615
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3561 wchar_t start[256];
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3562 ret = RegEnumKeyExW(HKEY_CLASSES_ROOT, idx++, start, &nameSize,
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3563 NULL, NULL, NULL, NULL);
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3564 if (ret == ERROR_SUCCESS) {
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3565 HKEY reg_key = NULL;
29615
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3566 ret = RegOpenKeyExW(HKEY_CLASSES_ROOT, start, 0, KEY_READ, &reg_key);
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3567 if (ret == ERROR_SUCCESS) {
29615
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3568 ret = RegQueryValueExW(reg_key, L"URL Protocol", NULL, NULL, NULL, NULL);
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3569 if (ret == ERROR_SUCCESS) {
29615
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3570 gchar *utf8 = g_utf16_to_utf8(start, -1, NULL, NULL, NULL);
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3571 gchar *protocol = g_strdup_printf("%s:", utf8);
62e4159afc84 Handle non-ASCII protocol names on Win32
Daniel Atallah <daniel.atallah@gmail.com>
parents: 29612
diff changeset
3572 g_free(utf8);
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3573 registered_url_handlers = g_slist_prepend(registered_url_handlers, protocol);
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3574 /* We still pass everything to the "http" "open" handler for security reasons */
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3575 gtk_imhtml_class_register_protocol(protocol, url_clicked_cb, link_context_menu);
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3576 }
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3577 RegCloseKey(reg_key);
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3578 }
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3579 ret = ERROR_SUCCESS;
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3580 }
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3581 } while (ret == ERROR_SUCCESS);
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3582
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3583 if (ret != ERROR_NO_MORE_ITEMS)
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3584 purple_debug_error("winpidgin", "Error iterating HKEY_CLASSES_ROOT subkeys: %ld\n",
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3585 ret);
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3586 }
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3587 #endif
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3588
31816
917c597beb97 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: 31460
diff changeset
3589 GtkWidget *
917c597beb97 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: 31460
diff changeset
3590 pidgin_make_scrollable(GtkWidget *child, GtkPolicyType hscrollbar_policy, GtkPolicyType vscrollbar_policy, GtkShadowType shadow_type, int width, int height)
917c597beb97 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: 31460
diff changeset
3591 {
917c597beb97 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: 31460
diff changeset
3592 GtkWidget *sw = gtk_scrolled_window_new(NULL, NULL);
917c597beb97 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: 31460
diff changeset
3593
917c597beb97 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: 31460
diff changeset
3594 if (G_LIKELY(sw)) {
917c597beb97 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: 31460
diff changeset
3595 gtk_widget_show(sw);
917c597beb97 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: 31460
diff changeset
3596 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), hscrollbar_policy, vscrollbar_policy);
917c597beb97 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: 31460
diff changeset
3597 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), shadow_type);
917c597beb97 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: 31460
diff changeset
3598 if (width != -1 || height != -1)
917c597beb97 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: 31460
diff changeset
3599 gtk_widget_set_size_request(sw, width, height);
917c597beb97 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: 31460
diff changeset
3600 if (child) {
917c597beb97 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: 31460
diff changeset
3601 if (GTK_WIDGET_GET_CLASS(child)->set_scroll_adjustments_signal)
917c597beb97 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: 31460
diff changeset
3602 gtk_container_add(GTK_CONTAINER(sw), child);
917c597beb97 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: 31460
diff changeset
3603 else
917c597beb97 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: 31460
diff changeset
3604 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw), child);
917c597beb97 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: 31460
diff changeset
3605 }
917c597beb97 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: 31460
diff changeset
3606 return sw;
917c597beb97 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: 31460
diff changeset
3607 }
917c597beb97 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: 31460
diff changeset
3608
917c597beb97 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: 31460
diff changeset
3609 return child;
917c597beb97 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: 31460
diff changeset
3610 }
917c597beb97 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: 31460
diff changeset
3611
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3612 void pidgin_utils_init(void)
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3613 {
25352
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3614 gtk_imhtml_class_register_protocol("http://", url_clicked_cb, link_context_menu);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3615 gtk_imhtml_class_register_protocol("https://", url_clicked_cb, link_context_menu);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3616 gtk_imhtml_class_register_protocol("ftp://", url_clicked_cb, link_context_menu);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3617 gtk_imhtml_class_register_protocol("gopher://", url_clicked_cb, link_context_menu);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3618 gtk_imhtml_class_register_protocol("mailto:", url_clicked_cb, copy_email_address);
25359
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3619
27479
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3620 gtk_imhtml_class_register_protocol("file://", file_clicked_cb, file_context_menu);
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3621 gtk_imhtml_class_register_protocol("audio://", audio_clicked_cb, audio_context_menu);
27479
39c6f1d0cf26 Install a custom GtkIMHtml procol handler for the "file://" type which
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27366
diff changeset
3622
25359
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3623 /* Example custom URL handler. */
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3624 gtk_imhtml_class_register_protocol("open://", open_dialog, dummy);
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3625
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3626 /* If we're under GNOME, try registering the system URL handlers. */
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3627 if (purple_running_gnome())
ba083e5f633b Remove all the special-casing in the GNOME URL handler registration.
Richard Laager <rlaager@wiktel.com>
parents: 25356
diff changeset
3628 register_gnome_url_handlers();
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3629
30018
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3630 /* Used to make small buttons */
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3631 gtk_rc_parse_string("style \"pidgin-small-close-button\"\n"
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3632 "{\n"
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3633 "GtkWidget::focus-padding = 0\n"
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3634 "GtkWidget::focus-line-width = 0\n"
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3635 "xthickness = 0\n"
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3636 "ythickness = 0\n"
30134
0625cebc84d7 Use cute little "¡ß" on the close buttons in conversation tabs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30051
diff changeset
3637 "GtkContainer::border-width = 0\n"
0625cebc84d7 Use cute little "¡ß" on the close buttons in conversation tabs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30051
diff changeset
3638 "GtkButton::inner-border = {0, 0, 0, 0}\n"
0625cebc84d7 Use cute little "¡ß" on the close buttons in conversation tabs.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 30051
diff changeset
3639 "GtkButton::default-border = {0, 0, 0, 0}\n"
30018
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3640 "}\n"
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3641 "widget \"*.pidgin-small-close-button\" style \"pidgin-small-close-button\"");
7ed0ddbdd2a8 Use an inline RC style to get rid of some other padding to make the small
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30016
diff changeset
3642
28748
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3643 #ifdef _WIN32
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3644 winpidgin_register_win32_url_handlers();
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3645 #endif
d2ffe8240a45 Register URL handlers for everything that Windows has knows about like we do
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28544
diff changeset
3646
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3647 }
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3648
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3649 void pidgin_utils_uninit(void)
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3650 {
25352
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3651 gtk_imhtml_class_register_protocol("open://", NULL, NULL);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3652
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3653 /* If we have GNOME handlers registered, unregister them. */
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3654 if (registered_url_handlers)
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3655 {
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3656 GSList *l;
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3657 for (l = registered_url_handlers; l; l = l->next)
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3658 {
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3659 gtk_imhtml_class_register_protocol((char *)l->data, NULL, NULL);
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3660 g_free(l->data);
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3661 }
28774
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3662 g_slist_free(registered_url_handlers);
3fdad8b715c7 Fix the win32 URIs to only linkify if the protocol is followed by a colon.
Daniel Atallah <daniel.atallah@gmail.com>
parents: 28748
diff changeset
3663 registered_url_handlers = NULL;
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3664 return;
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3665 }
27512
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3666
ff18653ef9f4 Add support in Pidgin for playing back audio:// links. Also include a "Save
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27495
diff changeset
3667 gtk_imhtml_class_register_protocol("audio://", NULL, NULL);
27495
e420ce168630 Set the "Open Containing Directory" icon to the "directory" stock icon
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 27479
diff changeset
3668 gtk_imhtml_class_register_protocol("file://", NULL, NULL);
25341
5b16203f76be First round of GNOME URL handler support.
Richard Laager <rlaager@wiktel.com>
parents: 25336
diff changeset
3669
25352
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3670 gtk_imhtml_class_register_protocol("http://", NULL, NULL);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3671 gtk_imhtml_class_register_protocol("https://", NULL, NULL);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3672 gtk_imhtml_class_register_protocol("ftp://", NULL, NULL);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3673 gtk_imhtml_class_register_protocol("mailto:", NULL, NULL);
48cf0a545621 Revert the URL scheme passing changes, keeping the miscellaneous other stuff
Richard Laager <rlaager@wiktel.com>
parents: 25351
diff changeset
3674 gtk_imhtml_class_register_protocol("gopher://", NULL, NULL);
24396
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3675 }
38a2f78f80a7 Allow plugins to specify custom link types to the GtkIMHtml widget.
Sadrul Habib Chowdhury <imadil@gmail.com>
parents: 24394
diff changeset
3676