pidgin/gtkstatusbox.c

Wed, 21 Sep 2011 06:45:26 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Wed, 21 Sep 2011 06:45:26 +0000
changeset 32575
eb4fc932fae9
parent 31889
96183796df0c
child 32433
f539a2c083b2
child 32596
927575c2af4e
child 33215
4f8d94fe3913
permissions
-rw-r--r--

Apply conversation theme when opening the GTK conversation. All the
parsing stuff was moved out of the theme code and into the conversation
code.

Someone (not me!) needs to check the code I commented out and see if
we really need that stuff (and then port it to WebKit/styling).

We also need to determine where to place Template.html and the rest
of our (not-yet-written) default theme.

10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1 /*
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2 * @file gtkstatusbox.c GTK+ Status Selection Widget
16254
eeb2bba4dc94 Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents: 16179
diff changeset
3 * @ingroup pidgin
20147
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
4 */
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
5
66f05a854eee applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents: 19859
diff changeset
6 /* pidgin
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
7 *
15931
716b5fac1895 Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents: 15885
diff changeset
8 * Pidgin is the legal property of its developers, whose names are too numerous
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
9 * to list here. Please refer to the COPYRIGHT file distributed with this
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
10 * source distribution.
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
11 *
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
12 * This program is free software; you can redistribute it and/or modify
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
13 * it under the terms of the GNU General Public License as published by
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
14 * the Free Software Foundation; either version 2 of the License, or
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
15 * (at your option) any later version.
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
16 *
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
17 * This program is distributed in the hope that it will be useful,
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
18 * but WITHOUT ANY WARRANTY; without even the implied warranty of
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
19 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
20 * GNU General Public License for more details.
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
21 *
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
22 * You should have received a copy of the GNU General Public License
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
23 * along with this program; if not, write to the Free Software
19859
71d37b57eff2 The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 19659
diff changeset
24 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
25 */
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
26
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
27 /*
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
28 * The status box is made up of two main pieces:
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
29 * - The box that displays the current status, which is made
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
30 * of a GtkListStore ("status_box->store") and GtkCellView
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
31 * ("status_box->cell_view"). There is always exactly 1 row
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
32 * in this list store. Only the TYPE_ICON and TYPE_TEXT
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
33 * columns are used in this list store.
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
34 * - The dropdown menu that lets users select a status, which
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
35 * is made of a GtkComboBox ("status_box") and GtkListStore
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
36 * ("status_box->dropdown_store"). This dropdown is shown
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
37 * when the user clicks on the box that displays the current
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
38 * status. This list store contains one row for Available,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
39 * one row for Away, etc., a few rows for popular statuses,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
40 * and the "New..." and "Saved..." options.
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
41 */
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
42
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
43 #include <gdk/gdkkeysyms.h>
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
44
18273
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18261
diff changeset
45 #include "internal.h"
e61c53184c52 #include reorganizations to allow compiling with glib < 2.8 using the
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 18261
diff changeset
46
11627
07feb58977aa [gaim-migrate @ 13902]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11593
diff changeset
47 #include "account.h"
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
48 #include "buddyicon.h"
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
49 #include "core.h"
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
50 #include "imgstore.h"
14767
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
51 #include "network.h"
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
52 #include "request.h"
11627
07feb58977aa [gaim-migrate @ 13902]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11593
diff changeset
53 #include "savedstatuses.h"
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
54 #include "status.h"
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
55 #include "debug.h"
11627
07feb58977aa [gaim-migrate @ 13902]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11593
diff changeset
56
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
57 #include "pidgin.h"
11729
56b1a9f35b74 [gaim-migrate @ 14020]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
58 #include "gtksavedstatuses.h"
15883
969b74a3e27a According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents: 15882
diff changeset
59 #include "pidginstock.h"
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
60 #include "gtkstatusbox.h"
12080
2aaca2265a51 [gaim-migrate @ 14377]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12076
diff changeset
61 #include "gtkutils.h"
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
62
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
63 #ifdef USE_GTKSPELL
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
64 # include <gtkspell/gtkspell.h>
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
65 # ifdef _WIN32
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
66 # include "wspell.h"
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
67 # endif
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
68 #endif
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
69
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
70 /* Timeout for typing notifications in seconds */
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
71 #define TYPING_TIMEOUT 4
12309
e42cff3223a3 [gaim-migrate @ 14613]
Mark Doliner <markdoliner@pidgin.im>
parents: 12294
diff changeset
72
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
73 static void imhtml_changed_cb(GtkTextBuffer *buffer, void *data);
12460
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
74 static void imhtml_format_changed_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, void *data);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
75 static void remove_typing_cb(PidginStatusBox *box);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
76 static void update_size (PidginStatusBox *box);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
77 static gint get_statusbox_index(PidginStatusBox *box, PurpleSavedStatus *saved_status);
22836
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
78 static PurpleAccount* check_active_accounts_for_identical_statuses(void);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
79
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
80 static void pidgin_status_box_pulse_typing(PidginStatusBox *status_box);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
81 static void pidgin_status_box_refresh(PidginStatusBox *status_box);
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
82 static void status_menu_refresh_iter(PidginStatusBox *status_box, gboolean status_changed);
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
83 static void pidgin_status_box_regenerate(PidginStatusBox *status_box, gboolean status_changed);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
84 static void pidgin_status_box_changed(PidginStatusBox *box);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
85 static void pidgin_status_box_size_request (GtkWidget *widget, GtkRequisition *requisition);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
86 static void pidgin_status_box_size_allocate (GtkWidget *widget, GtkAllocation *allocation);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
87 static gboolean pidgin_status_box_expose_event (GtkWidget *widget, GdkEventExpose *event);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
88 static void pidgin_status_box_redisplay_buddy_icon(PidginStatusBox *status_box);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
89 static void pidgin_status_box_forall (GtkContainer *container, gboolean include_internals, GtkCallback callback, gpointer callback_data);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
90 static void pidgin_status_box_popup(PidginStatusBox *box);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
91 static void pidgin_status_box_popdown(PidginStatusBox *box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
92
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
93 static void do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
94 static void icon_choose_cb(const char *filename, gpointer data);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
95 static void remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box);
27117
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
96 static void choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
97
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
98 enum {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
99 /** A PidginStatusBoxItemType */
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
100 TYPE_COLUMN,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
101
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
102 /** This is the stock-id for the icon. */
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
103 ICON_STOCK_COLUMN,
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
104
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
105 /**
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
106 * This is a GdkPixbuf (the other columns are strings).
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
107 * This column is visible.
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
108 */
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
109 ICON_COLUMN,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
110
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
111 /** The text displayed on the status box. This column is visible. */
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
112 TEXT_COLUMN,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
113
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
114 /** The plain-English title of this item */
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
115 TITLE_COLUMN,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
116
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
117 /** A plain-English description of this item */
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
118 DESC_COLUMN,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
119
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
120 /**
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
121 * This value depends on TYPE_COLUMN. For POPULAR types,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
122 * this is the creation time. For PRIMITIVE types,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
123 * this is the PurpleStatusPrimitive.
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
124 */
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
125 DATA_COLUMN,
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
126
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
127 /**
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
128 * This column stores the GdkPixbuf for the status emblem. Currently only 'saved' is stored.
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
129 * In the GtkTreeModel for the dropdown, this is the stock-id (gchararray), and for the
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
130 * GtkTreeModel for the cell_view (for the account-specific statusbox), this is the prpl-icon
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
131 * (GdkPixbuf) of the account.
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
132 */
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
133 EMBLEM_COLUMN,
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
134
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
135 /**
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
136 * This column stores whether to show the emblem.
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
137 */
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
138 EMBLEM_VISIBLE_COLUMN,
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
139
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
140 NUM_COLUMNS
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
141 };
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
142
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
143 enum {
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
144 PROP_0,
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
145 PROP_ACCOUNT,
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
146 PROP_ICON_SEL,
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
147 };
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
148
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
149 static char *typing_stock_ids[7] = {
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
150 PIDGIN_STOCK_ANIMATION_TYPING0,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
151 PIDGIN_STOCK_ANIMATION_TYPING1,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
152 PIDGIN_STOCK_ANIMATION_TYPING2,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
153 PIDGIN_STOCK_ANIMATION_TYPING3,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
154 PIDGIN_STOCK_ANIMATION_TYPING4,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
155 NULL
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
156 };
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
157
26887
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
158 static char *connecting_stock_ids[] = {
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
159 PIDGIN_STOCK_ANIMATION_CONNECT0,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
160 PIDGIN_STOCK_ANIMATION_CONNECT1,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
161 PIDGIN_STOCK_ANIMATION_CONNECT2,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
162 PIDGIN_STOCK_ANIMATION_CONNECT3,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
163 PIDGIN_STOCK_ANIMATION_CONNECT4,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
164 PIDGIN_STOCK_ANIMATION_CONNECT5,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
165 PIDGIN_STOCK_ANIMATION_CONNECT6,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
166 PIDGIN_STOCK_ANIMATION_CONNECT7,
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
167 PIDGIN_STOCK_ANIMATION_CONNECT8,
26887
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
168 PIDGIN_STOCK_ANIMATION_CONNECT9,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
169 PIDGIN_STOCK_ANIMATION_CONNECT10,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
170 PIDGIN_STOCK_ANIMATION_CONNECT11,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
171 PIDGIN_STOCK_ANIMATION_CONNECT12,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
172 PIDGIN_STOCK_ANIMATION_CONNECT13,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
173 PIDGIN_STOCK_ANIMATION_CONNECT14,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
174 PIDGIN_STOCK_ANIMATION_CONNECT15,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
175 PIDGIN_STOCK_ANIMATION_CONNECT16,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
176 PIDGIN_STOCK_ANIMATION_CONNECT17,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
177 PIDGIN_STOCK_ANIMATION_CONNECT18,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
178 PIDGIN_STOCK_ANIMATION_CONNECT19,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
179 PIDGIN_STOCK_ANIMATION_CONNECT20,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
180 PIDGIN_STOCK_ANIMATION_CONNECT21,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
181 PIDGIN_STOCK_ANIMATION_CONNECT22,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
182 PIDGIN_STOCK_ANIMATION_CONNECT23,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
183 PIDGIN_STOCK_ANIMATION_CONNECT24,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
184 PIDGIN_STOCK_ANIMATION_CONNECT25,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
185 PIDGIN_STOCK_ANIMATION_CONNECT26,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
186 PIDGIN_STOCK_ANIMATION_CONNECT27,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
187 PIDGIN_STOCK_ANIMATION_CONNECT28,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
188 PIDGIN_STOCK_ANIMATION_CONNECT29,
42bb7a83f5d3 Use a all the icons hbons had created for 'connecting' animation.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26886
diff changeset
189 PIDGIN_STOCK_ANIMATION_CONNECT30,
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
190 NULL
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
191 };
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
192
26886
e071638184b6 Don't expose the parent class.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26885
diff changeset
193 static GtkContainerClass *parent_class = NULL;
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
194
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
195 static void pidgin_status_box_class_init (PidginStatusBoxClass *klass);
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
196 static void pidgin_status_box_init (PidginStatusBox *status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
197
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
198 GType
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
199 pidgin_status_box_get_type (void)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
200 {
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
201 static GType status_box_type = 0;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
202
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
203 if (!status_box_type)
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
204 {
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
205 static const GTypeInfo status_box_info =
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
206 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
207 sizeof (PidginStatusBoxClass),
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
208 NULL, /* base_init */
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
209 NULL, /* base_finalize */
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
210 (GClassInitFunc) pidgin_status_box_class_init,
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
211 NULL, /* class_finalize */
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
212 NULL, /* class_data */
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
213 sizeof (PidginStatusBox),
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
214 0,
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
215 (GInstanceInitFunc) pidgin_status_box_init,
12221
49832990a0a4 [gaim-migrate @ 14523]
Richard Laager <rlaager@pidgin.im>
parents: 12125
diff changeset
216 NULL /* value_table */
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
217 };
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
218
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
219 status_box_type = g_type_register_static(GTK_TYPE_CONTAINER,
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
220 "PidginStatusBox",
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
221 &status_box_info,
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
222 0);
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
223 }
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
224
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
225 return status_box_type;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
226 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
227
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
228 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
229 pidgin_status_box_get_property(GObject *object, guint param_id,
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
230 GValue *value, GParamSpec *psec)
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
231 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
232 PidginStatusBox *statusbox = PIDGIN_STATUS_BOX(object);
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
233
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
234 switch (param_id) {
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
235 case PROP_ACCOUNT:
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
236 g_value_set_pointer(value, statusbox->account);
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
237 break;
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
238 case PROP_ICON_SEL:
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
239 g_value_set_boolean(value, statusbox->icon_box != NULL);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
240 break;
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
241 default:
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
242 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, psec);
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
243 break;
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
244 }
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
245 }
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
246
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
247 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
248 update_to_reflect_account_status(PidginStatusBox *status_box, PurpleAccount *account, PurpleStatus *newstatus)
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
249 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
250 GList *l;
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
251 int status_no = -1;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
252 const PurpleStatusType *statustype = NULL;
12060
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
253 const char *message;
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
254
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
255 statustype = purple_status_type_find_with_id((GList *)purple_account_get_status_types(account),
17082
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
256 (char *)purple_status_type_get_id(purple_status_get_type(newstatus)));
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
257
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
258 for (l = purple_account_get_status_types(account); l != NULL; l = l->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
259 PurpleStatusType *status_type = (PurpleStatusType *)l->data;
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
260
23408
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
261 if (!purple_status_type_is_user_settable(status_type) ||
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
262 purple_status_type_is_independent(status_type))
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
263 continue;
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
264 status_no++;
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
265 if (statustype == status_type)
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
266 break;
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
267 }
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
268
27032
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
269 gtk_imhtml_set_populate_primary_clipboard(
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
270 GTK_IMHTML(status_box->imhtml), TRUE);
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
271
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
272 if (status_no != -1) {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
273 GtkTreePath *path;
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
274 gtk_widget_set_sensitive(GTK_WIDGET(status_box), FALSE);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
275 path = gtk_tree_path_new_from_indices(status_no, -1);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
276 if (status_box->active_row)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
277 gtk_tree_row_reference_free(status_box->active_row);
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
278 status_box->active_row = gtk_tree_row_reference_new(GTK_TREE_MODEL(status_box->dropdown_store), path);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
279 gtk_tree_path_free(path);
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12275
diff changeset
280
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
281 message = purple_status_get_attr_string(newstatus, "message");
12060
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
282
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
283 if (!message || !*message)
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
284 {
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
285 gtk_widget_hide_all(status_box->vbox);
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
286 status_box->imhtml_visible = FALSE;
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
287 }
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
288 else
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
289 {
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
290 gtk_widget_show_all(status_box->vbox);
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
291 status_box->imhtml_visible = TRUE;
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
292 gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml));
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
293 gtk_imhtml_clear_formatting(GTK_IMHTML(status_box->imhtml));
12060
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
294 gtk_imhtml_append_text(GTK_IMHTML(status_box->imhtml), message, 0);
02c6d16cb1ec [gaim-migrate @ 14355]
Tim Ringenbach <marv@pidgin.im>
parents: 11998
diff changeset
295 }
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
296 gtk_widget_set_sensitive(GTK_WIDGET(status_box), TRUE);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
297 pidgin_status_box_refresh(status_box);
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
298 }
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
299 }
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
300
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
301 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
302 account_status_changed_cb(PurpleAccount *account, PurpleStatus *oldstatus, PurpleStatus *newstatus, PidginStatusBox *status_box)
11967
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
303 {
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
304 if (status_box->account == account)
d64971fce9a4 [gaim-migrate @ 14259]
Tim Ringenbach <marv@pidgin.im>
parents: 11960
diff changeset
305 update_to_reflect_account_status(status_box, account, newstatus);
14804
8c79ca123c25 [gaim-migrate @ 17499]
Daniel Atallah <datallah@pidgin.im>
parents: 14801
diff changeset
306 else if (status_box->token_status_account == account)
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
307 status_menu_refresh_iter(status_box, TRUE);
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
308 }
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
309
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
310 static gboolean
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
311 icon_box_press_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *box)
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
312 {
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
313 if (event->button == 3) {
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
314 GtkWidget *menu_item;
28781
aa9d7de793fb Disable 'Remove' when no icon set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28752
diff changeset
315 const char *path;
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
316
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
317 if (box->icon_box_menu)
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
318 gtk_widget_destroy(box->icon_box_menu);
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
319
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
320 box->icon_box_menu = gtk_menu_new();
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
321
27118
10ac108f90ea Use GTK_STOCK_ADD for the Select Buddy Icon option.
Richard Laager <rlaager@pidgin.im>
parents: 27117
diff changeset
322 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Select Buddy Icon"), GTK_STOCK_ADD,
27117
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
323 G_CALLBACK(choose_buddy_icon_cb),
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
324 box, 0, 0, NULL);
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
325
15568
cd19bb5a51b8 gtkutils changes
Sean Egan <seanegan@pidgin.im>
parents: 15562
diff changeset
326 menu_item = pidgin_new_item_from_stock(box->icon_box_menu, _("Remove"), GTK_STOCK_REMOVE,
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
327 G_CALLBACK(remove_buddy_icon_cb),
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
328 box, 0, 0, NULL);
28781
aa9d7de793fb Disable 'Remove' when no icon set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28752
diff changeset
329 if (!(path = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon"))
aa9d7de793fb Disable 'Remove' when no icon set.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 28752
diff changeset
330 || !*path)
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
331 gtk_widget_set_sensitive(menu_item, FALSE);
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
332
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
333 gtk_menu_popup(GTK_MENU(box->icon_box_menu), NULL, NULL, NULL, NULL,
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
334 event->button, event->time);
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
335
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
336 } else {
27117
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
337 choose_buddy_icon_cb(widget, box);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
338 }
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
339 return FALSE;
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
340 }
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
341
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
342 static void
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
343 icon_box_dnd_cb(GtkWidget *widget, GdkDragContext *dc, gint x, gint y,
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
344 GtkSelectionData *sd, guint info, guint t, PidginStatusBox *box)
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
345 {
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
346 gchar *name = (gchar *)sd->data;
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
347
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
348 if ((sd->length >= 0) && (sd->format == 8)) {
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
349 /* Well, it looks like the drag event was cool.
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
350 * Let's do something with it */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
351 if (!g_ascii_strncasecmp(name, "file://", 7)) {
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
352 GError *converr = NULL;
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
353 gchar *tmp, *rtmp;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
354
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
355 if(!(tmp = g_filename_from_uri(name, NULL, &converr))) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
356 purple_debug(PURPLE_DEBUG_ERROR, "buddyicon", "%s\n",
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
357 (converr ? converr->message :
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
358 "g_filename_from_uri error"));
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
359 return;
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
360 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
361 if ((rtmp = strchr(tmp, '\r')) || (rtmp = strchr(tmp, '\n')))
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
362 *rtmp = '\0';
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
363 icon_choose_cb(tmp, box);
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
364 g_free(tmp);
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
365 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
366 gtk_drag_finish(dc, TRUE, FALSE, t);
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
367 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
368 gtk_drag_finish(dc, FALSE, FALSE, t);
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
369 }
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
370
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
371 static void
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
372 statusbox_got_url(PurpleUtilFetchUrlData *url_data, gpointer user_data,
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
373 const gchar *themedata, size_t len, const gchar *error_message)
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
374 {
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
375 FILE *f;
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
376 gchar *path;
22192
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
377 size_t wc;
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
378
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
379 if ((error_message != NULL) || (len == 0))
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
380 return;
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
381
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
382 f = purple_mkstemp(&path, TRUE);
22192
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
383 wc = fwrite(themedata, len, 1, f);
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
384 if (wc != 1) {
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
385 purple_debug_warning("theme_got_url", "Unable to write theme data.\n");
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
386 fclose(f);
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
387 g_unlink(path);
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
388 g_free(path);
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
389 return;
caf56838b384 Part of a large patch from o_sukhodolsky to fix some build warnings.
Richard Laager <rlaager@pidgin.im>
parents: 22104
diff changeset
390 }
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
391 fclose(f);
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
392
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
393 icon_choose_cb(path, user_data);
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
394
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
395 g_unlink(path);
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
396 g_free(path);
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
397 }
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
398
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
399
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
400 static gboolean
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
401 statusbox_uri_handler(const char *proto, const char *cmd, GHashTable *params, void *data)
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
402 {
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
403 const char *src;
15941
46e2ca64ebaa Fix a compile warning so that statusbox_got_url() might actually work
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15931
diff changeset
404
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
405 if (g_ascii_strcasecmp(proto, "aim"))
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
406 return FALSE;
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
407
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
408 if (g_ascii_strcasecmp(cmd, "buddyicon"))
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
409 return FALSE;
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
410
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
411 src = g_hash_table_lookup(params, "account");
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
412 if (src == NULL)
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
413 return FALSE;
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
414
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
415 purple_util_fetch_url(src, TRUE, NULL, FALSE, statusbox_got_url, data);
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
416 return TRUE;
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
417 }
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
418
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
419 static gboolean
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
420 icon_box_enter_cb(GtkWidget *widget, GdkEventCrossing *event, PidginStatusBox *box)
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
421 {
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
422 gdk_window_set_cursor(widget->window, box->hand_cursor);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
423 gtk_image_set_from_pixbuf(GTK_IMAGE(box->icon), box->buddy_icon_hover);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
424 return FALSE;
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
425 }
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
426
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
427 static gboolean
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
428 icon_box_leave_cb(GtkWidget *widget, GdkEventCrossing *event, PidginStatusBox *box)
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
429 {
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
430 gdk_window_set_cursor(widget->window, box->arrow_cursor);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
431 gtk_image_set_from_pixbuf(GTK_IMAGE(box->icon), box->buddy_icon) ;
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
432 return FALSE;
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
433 }
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
434
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
435
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
436 static const GtkTargetEntry dnd_targets[] = {
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
437 {"text/plain", 0, 0},
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
438 {"text/uri-list", 0, 1},
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
439 {"STRING", 0, 2}
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
440 };
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
441
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
442 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
443 setup_icon_box(PidginStatusBox *status_box)
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
444 {
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
445 if (status_box->icon_box != NULL)
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
446 return;
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
447
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
448 status_box->icon = gtk_image_new();
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
449 status_box->icon_box = gtk_event_box_new();
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
450 gtk_widget_set_parent(status_box->icon_box, GTK_WIDGET(status_box));
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
451 gtk_widget_show(status_box->icon_box);
24508
dc1840d35fd7 gtk_widget_set_tooltip_text() is GTK+ >= 2.12
Daniel Atallah <datallah@pidgin.im>
parents: 24507
diff changeset
452
dc1840d35fd7 gtk_widget_set_tooltip_text() is GTK+ >= 2.12
Daniel Atallah <datallah@pidgin.im>
parents: 24507
diff changeset
453 #if GTK_CHECK_VERSION(2,12,0)
24434
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
454 gtk_widget_set_tooltip_text(status_box->icon_box,
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
455 status_box->account ? _("Click to change your buddyicon for this account.") :
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
456 _("Click to change your buddyicon for all accounts."));
24508
dc1840d35fd7 gtk_widget_set_tooltip_text() is GTK+ >= 2.12
Daniel Atallah <datallah@pidgin.im>
parents: 24507
diff changeset
457 #endif
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
458
14216
ef4c360d75c9 [gaim-migrate @ 16799]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14215
diff changeset
459 if (status_box->account &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
460 !purple_account_get_bool(status_box->account, "use-global-buddyicon", TRUE))
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
461 {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
462 PurpleStoredImage *img = purple_buddy_icons_find_account_icon(status_box->account);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
463 pidgin_status_box_set_buddy_icon(status_box, img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
464 purple_imgstore_unref(img);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
465 }
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
466 else
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
467 {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
468 const char *filename = purple_prefs_get_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon");
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
469 PurpleStoredImage *img = NULL;
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
470
28087
9e95271a4276 statusbox: Avoid an assertion failure from ""
Paul Aurich <darkrain42@pidgin.im>
parents: 27365
diff changeset
471 if (filename && *filename)
25745
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
472 img = purple_imgstore_new_from_file(filename);
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
473
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
474 pidgin_status_box_set_buddy_icon(status_box, img);
25745
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
475 if (img)
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
476 /*
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
477 * purple_imgstore_new gives us a reference and
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
478 * pidgin_status_box_set_buddy_icon also takes one.
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
479 */
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
480 purple_imgstore_unref(img);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
481 }
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
482
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
483 status_box->hand_cursor = gdk_cursor_new (GDK_HAND2);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
484 status_box->arrow_cursor = gdk_cursor_new (GDK_LEFT_PTR);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
485
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
486 /* Set up DND */
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
487 gtk_drag_dest_set(status_box->icon_box,
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
488 GTK_DEST_DEFAULT_MOTION |
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
489 GTK_DEST_DEFAULT_DROP,
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
490 dnd_targets,
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
491 sizeof(dnd_targets) / sizeof(GtkTargetEntry),
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
492 GDK_ACTION_COPY);
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
493
14623
046a118a3b04 [gaim-migrate @ 17284]
Sean Egan <seanegan@pidgin.im>
parents: 14608
diff changeset
494 g_signal_connect(G_OBJECT(status_box->icon_box), "drag_data_received", G_CALLBACK(icon_box_dnd_cb), status_box);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
495 g_signal_connect(G_OBJECT(status_box->icon_box), "enter-notify-event", G_CALLBACK(icon_box_enter_cb), status_box);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
496 g_signal_connect(G_OBJECT(status_box->icon_box), "leave-notify-event", G_CALLBACK(icon_box_leave_cb), status_box);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
497 g_signal_connect(G_OBJECT(status_box->icon_box), "button-press-event", G_CALLBACK(icon_box_press_cb), status_box);
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
498
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
499 gtk_container_add(GTK_CONTAINER(status_box->icon_box), status_box->icon);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
500 gtk_widget_show(status_box->icon);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
501 }
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
502
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
503 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
504 destroy_icon_box(PidginStatusBox *statusbox)
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
505 {
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
506 if (statusbox->icon_box == NULL)
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
507 return;
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
508
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
509 gtk_widget_destroy(statusbox->icon_box);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
510 gdk_cursor_unref(statusbox->hand_cursor);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
511 gdk_cursor_unref(statusbox->arrow_cursor);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
512
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
513 purple_imgstore_unref(statusbox->buddy_icon_img);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
514
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
515 g_object_unref(G_OBJECT(statusbox->buddy_icon));
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
516 g_object_unref(G_OBJECT(statusbox->buddy_icon_hover));
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
517
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
518 if (statusbox->buddy_icon_sel)
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
519 gtk_widget_destroy(statusbox->buddy_icon_sel);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
520
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
521 if (statusbox->icon_box_menu)
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
522 gtk_widget_destroy(statusbox->icon_box_menu);
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
523
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
524 statusbox->icon = NULL;
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
525 statusbox->icon_box = NULL;
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
526 statusbox->icon_box_menu = NULL;
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
527 statusbox->buddy_icon_img = NULL;
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
528 statusbox->buddy_icon = NULL;
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
529 statusbox->buddy_icon_hover = NULL;
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
530 statusbox->hand_cursor = NULL;
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
531 statusbox->arrow_cursor = NULL;
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
532 }
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
533
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
534 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
535 pidgin_status_box_set_property(GObject *object, guint param_id,
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
536 const GValue *value, GParamSpec *pspec)
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
537 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
538 PidginStatusBox *statusbox = PIDGIN_STATUS_BOX(object);
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
539
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
540 switch (param_id) {
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
541 case PROP_ICON_SEL:
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
542 if (g_value_get_boolean(value)) {
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
543 if (statusbox->account) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
544 PurplePlugin *plug = purple_plugins_find_with_id(purple_account_get_protocol_id(statusbox->account));
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
545 if (plug) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
546 PurplePluginProtocolInfo *prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plug);
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
547 if (prplinfo && prplinfo->icon_spec.format != NULL)
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
548 setup_icon_box(statusbox);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
549 }
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
550 } else {
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
551 setup_icon_box(statusbox);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
552 }
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
553 } else {
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
554 destroy_icon_box(statusbox);
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
555 }
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
556 break;
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
557 case PROP_ACCOUNT:
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
558 statusbox->account = g_value_get_pointer(value);
22836
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
559 if (statusbox->account)
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
560 statusbox->token_status_account = NULL;
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
561 else
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
562 statusbox->token_status_account = check_active_accounts_for_identical_statuses();
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
563
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
564 pidgin_status_box_regenerate(statusbox, TRUE);
12256
2ad29826207a [gaim-migrate @ 14558]
Sean Egan <seanegan@pidgin.im>
parents: 12244
diff changeset
565
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
566 break;
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
567 default:
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
568 G_OBJECT_WARN_INVALID_PROPERTY_ID(object, param_id, pspec);
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
569 break;
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
570 }
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
571 }
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
572
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
573 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
574 pidgin_status_box_finalize(GObject *obj)
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
575 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
576 PidginStatusBox *statusbox = PIDGIN_STATUS_BOX(obj);
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
577 int i;
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
578
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
579 purple_signals_disconnect_by_handle(statusbox);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
580 purple_prefs_disconnect_by_handle(statusbox);
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
581
22216
c4b8738c471c Destroy the icon box only when there's one. This gets rid of a runtime warning for statusboxes without a buddy-icon selector (e.g., for an IRC account).
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22214
diff changeset
582 destroy_icon_box(statusbox);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
583
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
584 if (statusbox->active_row)
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
585 gtk_tree_row_reference_free(statusbox->active_row);
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
586
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
587 for (i = 0; i < G_N_ELEMENTS(statusbox->connecting_pixbufs); i++) {
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
588 if (statusbox->connecting_pixbufs[i] != NULL)
26820
76f90ca8f6f2 Use g_object_ref/unref instead of the deprecated versions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26753
diff changeset
589 g_object_unref(G_OBJECT(statusbox->connecting_pixbufs[i]));
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
590 }
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
591
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
592 for (i = 0; i < G_N_ELEMENTS(statusbox->typing_pixbufs); i++) {
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
593 if (statusbox->typing_pixbufs[i] != NULL)
26820
76f90ca8f6f2 Use g_object_ref/unref instead of the deprecated versions.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26753
diff changeset
594 g_object_unref(G_OBJECT(statusbox->typing_pixbufs[i]));
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
595 }
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
596
22214
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
597 g_object_unref(G_OBJECT(statusbox->store));
e8a9916cb99e It turns out the tree-models need to be unref'ed.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22104
diff changeset
598 g_object_unref(G_OBJECT(statusbox->dropdown_store));
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
599 G_OBJECT_CLASS(parent_class)->finalize(obj);
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
600 }
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
601
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
602 static GType
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
603 pidgin_status_box_child_type (GtkContainer *container)
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
604 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
605 return GTK_TYPE_WIDGET;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
606 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
607
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
608 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
609 pidgin_status_box_class_init (PidginStatusBoxClass *klass)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
610 {
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
611 GObjectClass *object_class;
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
612 GtkWidgetClass *widget_class;
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
613 GtkContainerClass *container_class = (GtkContainerClass*)klass;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
614
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
615 parent_class = g_type_class_peek_parent(klass);
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
616
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
617 widget_class = (GtkWidgetClass*)klass;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
618 widget_class->size_request = pidgin_status_box_size_request;
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
619 widget_class->size_allocate = pidgin_status_box_size_allocate;
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
620 widget_class->expose_event = pidgin_status_box_expose_event;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
621
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
622 container_class->child_type = pidgin_status_box_child_type;
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
623 container_class->forall = pidgin_status_box_forall;
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
624 container_class->remove = NULL;
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
625
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
626 object_class = (GObjectClass *)klass;
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
627
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
628 object_class->finalize = pidgin_status_box_finalize;
12379
c8d19d5bf238 [gaim-migrate @ 14683]
Daniel Atallah <datallah@pidgin.im>
parents: 12320
diff changeset
629
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
630 object_class->get_property = pidgin_status_box_get_property;
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
631 object_class->set_property = pidgin_status_box_set_property;
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
632
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
633 g_object_class_install_property(object_class,
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
634 PROP_ACCOUNT,
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
635 g_param_spec_pointer("account",
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
636 "Account",
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
637 "The account, or NULL for all accounts",
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
638 G_PARAM_READWRITE
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
639 )
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
640 );
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
641 g_object_class_install_property(object_class,
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
642 PROP_ICON_SEL,
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
643 g_param_spec_boolean("iconsel",
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
644 "Icon Selector",
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
645 "Whether the icon selector should be displayed or not.",
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
646 FALSE,
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
647 G_PARAM_READWRITE
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
648 )
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
649 );
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
650 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
651
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
652 /**
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
653 * This updates the text displayed on the status box so that it shows
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
654 * the current status. This is the only function in this file that
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
655 * should modify status_box->store
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
656 */
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
657 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
658 pidgin_status_box_refresh(PidginStatusBox *status_box)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
659 {
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
660 GtkStyle *style;
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
661 char aa_color[8];
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
662 PurpleSavedStatus *saved_status;
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
663 char *primary, *secondary, *text;
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
664 const char *stock = NULL;
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
665 GdkPixbuf *emblem = NULL;
10702
55a43c79fd6f [gaim-migrate @ 12284]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10672
diff changeset
666 GtkTreePath *path;
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
667 gboolean account_status = FALSE;
22836
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
668 PurpleAccount *acct = (status_box->account) ? status_box->account : status_box->token_status_account;
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
669
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
670 style = gtk_widget_get_style(GTK_WIDGET(status_box));
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
671 snprintf(aa_color, sizeof(aa_color), "#%02x%02x%02x",
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
672 style->text_aa[GTK_STATE_NORMAL].red >> 8,
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
673 style->text_aa[GTK_STATE_NORMAL].green >> 8,
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
674 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
10672
225bdbfdc28f [gaim-migrate @ 12212]
Daniel Atallah <datallah@pidgin.im>
parents: 10661
diff changeset
675
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
676 saved_status = purple_savedstatus_get_current();
13122
85136c011157 [gaim-migrate @ 15483]
Mark Doliner <markdoliner@pidgin.im>
parents: 13112
diff changeset
677
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
678 if (status_box->account || (status_box->token_status_account
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
679 && purple_savedstatus_is_transient(saved_status)))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
680 account_status = TRUE;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
681
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
682 /* Primary */
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
683 if (status_box->typing != 0)
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
684 {
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
685 GtkTreeIter iter;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
686 PidginStatusBoxItemType type;
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
687 gpointer data;
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
688
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
689 /* Primary (get the status selected in the dropdown) */
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
690 path = gtk_tree_row_reference_get_path(status_box->active_row);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
691 if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path))
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
692 return;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
693 gtk_tree_path_free(path);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
694
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
695 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
696 TYPE_COLUMN, &type,
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
697 DATA_COLUMN, &data,
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
698 -1);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
699 if (type == PIDGIN_STATUS_BOX_TYPE_PRIMITIVE)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
700 primary = g_strdup(purple_primitive_get_name_from_type(GPOINTER_TO_INT(data)));
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
701 else
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
702 /* This should never happen, but just in case... */
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
703 primary = g_strdup("New status");
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
704 }
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
705 else if (account_status)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
706 primary = g_strdup(purple_status_get_name(purple_account_get_active_status(acct)));
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
707 else if (purple_savedstatus_is_transient(saved_status))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
708 primary = g_strdup(purple_primitive_get_name_from_type(purple_savedstatus_get_type(saved_status)));
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
709 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
710 primary = g_markup_escape_text(purple_savedstatus_get_title(saved_status), -1);
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
711
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
712 /* Secondary */
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
713 if (status_box->typing != 0)
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
714 secondary = g_strdup(_("Typing"));
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
715 else if (status_box->connecting)
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
716 secondary = g_strdup(_("Connecting"));
14767
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
717 else if (!status_box->network_available)
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
718 secondary = g_strdup(_("Waiting for network connection"));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
719 else if (purple_savedstatus_is_transient(saved_status))
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
720 secondary = NULL;
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
721 else
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
722 {
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
723 const char *message;
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
724 char *tmp;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
725 message = purple_savedstatus_get_message(saved_status);
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
726 if (message != NULL)
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
727 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
728 tmp = purple_markup_strip_html(message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
729 purple_util_chrreplace(tmp, '\n', ' ');
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
730 secondary = g_markup_escape_text(tmp, -1);
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
731 g_free(tmp);
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
732 }
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
733 else
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
734 secondary = NULL;
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
735 }
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
736
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
737 /* Pixbuf */
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
738 if (status_box->typing != 0)
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
739 stock = typing_stock_ids[status_box->typing_index];
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
740 else if (status_box->connecting)
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
741 stock = connecting_stock_ids[status_box->connecting_index];
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
742 else
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
743 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
744 PurpleStatusType *status_type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
745 PurpleStatusPrimitive prim;
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
746 if (account_status) {
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
747 status_type = purple_status_get_type(purple_account_get_active_status(acct));
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
748 prim = purple_status_type_get_primitive(status_type);
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
749 } else {
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
750 prim = purple_savedstatus_get_type(saved_status);
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
751 }
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
752
26846
d5546da39e44 Use stock-id in the status editor window too.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26845
diff changeset
753 stock = pidgin_stock_id_from_status_primitive(prim);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
754 }
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
755
13122
85136c011157 [gaim-migrate @ 15483]
Mark Doliner <markdoliner@pidgin.im>
parents: 13112
diff changeset
756 if (status_box->account != NULL) {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
757 text = g_strdup_printf("%s - <span size=\"smaller\" color=\"%s\">%s</span>",
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
758 purple_account_get_username(status_box->account),
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
759 aa_color, secondary ? secondary : primary);
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
760 emblem = pidgin_create_prpl_icon(status_box->account, PIDGIN_PRPL_ICON_SMALL);
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
761 } else if (secondary != NULL) {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
762 text = g_strdup_printf("%s<span size=\"smaller\" color=\"%s\"> - %s</span>",
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
763 primary, aa_color, secondary);
12228
448ba4f01ac6 [gaim-migrate @ 14530]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12221
diff changeset
764 } else {
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
765 text = g_strdup(primary);
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
766 }
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
767 g_free(primary);
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
768 g_free(secondary);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
769
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
770 /*
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
771 * Only two columns are used in this list store (does it
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
772 * really need to be a list store?)
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
773 */
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
774 gtk_list_store_set(status_box->store, &(status_box->iter),
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
775 ICON_STOCK_COLUMN, (gpointer)stock,
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
776 TEXT_COLUMN, text,
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
777 EMBLEM_COLUMN, emblem,
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
778 EMBLEM_VISIBLE_COLUMN, (emblem != NULL),
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
779 -1);
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
780 g_free(text);
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
781 if (emblem)
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
782 g_object_unref(emblem);
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
783
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
784 /* Make sure to activate the only row in the tree view */
10702
55a43c79fd6f [gaim-migrate @ 12284]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10672
diff changeset
785 path = gtk_tree_path_new_from_string("0");
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
786 gtk_cell_view_set_displayed_row(GTK_CELL_VIEW(status_box->cell_view), path);
10702
55a43c79fd6f [gaim-migrate @ 12284]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 10672
diff changeset
787 gtk_tree_path_free(path);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
788
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
789 update_size(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
790 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
791
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
792 static PurpleStatusType *
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
793 find_status_type_by_index(const PurpleAccount *account, gint active)
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
794 {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
795 GList *l = purple_account_get_status_types(account);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
796 gint i;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
797
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
798 for (i = 0; l; l = l->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
799 PurpleStatusType *status_type = l->data;
23408
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
800 if (!purple_status_type_is_user_settable(status_type) ||
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
801 purple_status_type_is_independent(status_type))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
802 continue;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
803
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
804 if (active == i)
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
805 return status_type;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
806 i++;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
807 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
808
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
809 return NULL;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
810 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
811
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
812 /**
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
813 * This updates the GtkTreeView so that it correctly shows the state
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
814 * we are currently using. It is used when the current state is
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
815 * updated from somewhere other than the GtkStatusBox (from a plugin,
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
816 * or when signing on with the "-n" option, for example). It is
13025
824f4aef4e33 [gaim-migrate @ 15378]
Mark Doliner <markdoliner@pidgin.im>
parents: 13023
diff changeset
817 * also used when the user selects the "New..." option.
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
818 *
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
819 * Maybe we could accomplish this by triggering off the mouse and
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
820 * keyboard signals instead of the changed signal?
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
821 */
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
822 static void
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
823 status_menu_refresh_iter(PidginStatusBox *status_box, gboolean status_changed)
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
824 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
825 PurpleSavedStatus *saved_status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
826 PurpleStatusPrimitive primitive;
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
827 gint index;
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
828 const char *message;
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
829 GtkTreePath *path = NULL;
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
830
11983
e4dde668ace7 [gaim-migrate @ 14276]
Tim Ringenbach <marv@pidgin.im>
parents: 11981
diff changeset
831 /* this function is inappropriate for ones with accounts */
e4dde668ace7 [gaim-migrate @ 14276]
Tim Ringenbach <marv@pidgin.im>
parents: 11981
diff changeset
832 if (status_box->account)
e4dde668ace7 [gaim-migrate @ 14276]
Tim Ringenbach <marv@pidgin.im>
parents: 11981
diff changeset
833 return;
e4dde668ace7 [gaim-migrate @ 14276]
Tim Ringenbach <marv@pidgin.im>
parents: 11981
diff changeset
834
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
835 saved_status = purple_savedstatus_get_current();
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
836
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
837 /*
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
838 * Suppress the "changed" signal because the status
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
839 * was changed programmatically.
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
840 */
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
841 gtk_widget_set_sensitive(GTK_WIDGET(status_box), FALSE);
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
842
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
843 /*
14801
6554d4d17db8 [gaim-migrate @ 17495]
Etan Reisner <deryni@pidgin.im>
parents: 14767
diff changeset
844 * If there is a token-account, then select the primitive from the
6554d4d17db8 [gaim-migrate @ 17495]
Etan Reisner <deryni@pidgin.im>
parents: 14767
diff changeset
845 * dropdown using a loop. Otherwise select from the default list.
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
846 */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
847 primitive = purple_savedstatus_get_type(saved_status);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
848 if (!status_box->token_status_account && purple_savedstatus_is_transient(saved_status) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
849 ((primitive == PURPLE_STATUS_AVAILABLE) || (primitive == PURPLE_STATUS_AWAY) ||
19455
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
850 (primitive == PURPLE_STATUS_INVISIBLE) || (primitive == PURPLE_STATUS_OFFLINE) ||
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
851 (primitive == PURPLE_STATUS_UNAVAILABLE)) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
852 (!purple_savedstatus_has_substatuses(saved_status)))
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
853 {
14809
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
854 index = get_statusbox_index(status_box, saved_status);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
855 path = gtk_tree_path_new_from_indices(index, -1);
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
856 }
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
857 else
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
858 {
13066
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
859 GtkTreeIter iter;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
860 PidginStatusBoxItemType type;
13112
d2c4ff0321e1 [gaim-migrate @ 15473]
Mark Doliner <markdoliner@pidgin.im>
parents: 13099
diff changeset
861 gpointer data;
13066
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
862
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
863 /* If this saved status is in the list store, then set it as the active item */
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
864 if (gtk_tree_model_get_iter_first(GTK_TREE_MODEL(status_box->dropdown_store), &iter))
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
865 {
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
866 do
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
867 {
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
868 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
13112
d2c4ff0321e1 [gaim-migrate @ 15473]
Mark Doliner <markdoliner@pidgin.im>
parents: 13099
diff changeset
869 TYPE_COLUMN, &type,
13066
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
870 DATA_COLUMN, &data,
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
871 -1);
14809
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
872
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
873 /* This is a special case because Primitives for the token_status_account are actually
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
874 * saved statuses with substatuses for the enabled accounts */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
875 if (status_box->token_status_account && purple_savedstatus_is_transient(saved_status)
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
876 && type == PIDGIN_STATUS_BOX_TYPE_PRIMITIVE && primitive == GPOINTER_TO_INT(data))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
877 {
14738
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
878 char *name;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
879 const char *acct_status_name = purple_status_get_name(
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
880 purple_account_get_active_status(status_box->token_status_account));
14738
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
881
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
882 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
883 TEXT_COLUMN, &name, -1);
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
884
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
885 if (!purple_savedstatus_has_substatuses(saved_status)
14809
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
886 || !strcmp(name, acct_status_name))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
887 {
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
888 /* Found! */
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
889 path = gtk_tree_model_get_path(GTK_TREE_MODEL(status_box->dropdown_store), &iter);
14738
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
890 g_free(name);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
891 break;
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
892 }
14738
09249782862d [gaim-migrate @ 17425]
Daniel Atallah <datallah@pidgin.im>
parents: 14725
diff changeset
893 g_free(name);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
894
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
895 } else if ((type == PIDGIN_STATUS_BOX_TYPE_POPULAR) &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
896 (GPOINTER_TO_INT(data) == purple_savedstatus_get_creation_time(saved_status)))
14809
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
897 {
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
898 /* Found! */
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
899 path = gtk_tree_model_get_path(GTK_TREE_MODEL(status_box->dropdown_store), &iter);
14809
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
900 break;
a706db03c45f [gaim-migrate @ 17504]
Daniel Atallah <datallah@pidgin.im>
parents: 14806
diff changeset
901 }
15216
2859ff89476d [gaim-migrate @ 17940]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15201
diff changeset
902 } while (gtk_tree_model_iter_next(GTK_TREE_MODEL(status_box->dropdown_store), &iter));
13066
3e0627fbf320 [gaim-migrate @ 15428]
Mark Doliner <markdoliner@pidgin.im>
parents: 13065
diff changeset
903 }
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
904 }
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
905
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
906 if (status_box->active_row)
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
907 gtk_tree_row_reference_free(status_box->active_row);
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
908 if (path) { /* path should never be NULL */
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
909 status_box->active_row = gtk_tree_row_reference_new(GTK_TREE_MODEL(status_box->dropdown_store), path);
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
910 gtk_tree_path_free(path);
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
911 } else
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
912 status_box->active_row = NULL;
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
913
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
914 if (status_changed) {
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
915 message = purple_savedstatus_get_message(saved_status);
28752
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
916
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
917 /*
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
918 * If we are going to hide the imhtml, don't retain the
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
919 * message because showing the old message later is
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
920 * confusing. If we are going to set the message to a pre-set,
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
921 * then we need to do this anyway
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
922 *
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
923 * Suppress the "changed" signal because the status
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
924 * was changed programmatically.
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
925 */
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
926 gtk_widget_set_sensitive(GTK_WIDGET(status_box->imhtml), FALSE);
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
927
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
928 gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml));
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
929 gtk_imhtml_clear_formatting(GTK_IMHTML(status_box->imhtml));
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
930
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
931 if (!purple_savedstatus_is_transient(saved_status) || !message || !*message)
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
932 {
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
933 status_box->imhtml_visible = FALSE;
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
934 gtk_widget_hide_all(status_box->vbox);
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
935 }
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
936 else
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
937 {
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
938 status_box->imhtml_visible = TRUE;
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
939 gtk_widget_show_all(status_box->vbox);
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
940
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
941 gtk_imhtml_append_text(GTK_IMHTML(status_box->imhtml), message, 0);
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
942 }
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
943
28752
d9499e1405f9 don't remember the message if we switch to a saved status (transient
Ka-Hing Cheung <khc@pidgin.im>
parents: 28751
diff changeset
944 gtk_widget_set_sensitive(GTK_WIDGET(status_box->imhtml), TRUE);
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
945 update_size(status_box);
12125
c1e55f812ded [gaim-migrate @ 14425]
Mark Doliner <markdoliner@pidgin.im>
parents: 12123
diff changeset
946 }
12634
943954b63b48 [gaim-migrate @ 14970]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12619
diff changeset
947
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
948 /* Stop suppressing the "changed" signal. */
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
949 gtk_widget_set_sensitive(GTK_WIDGET(status_box), TRUE);
11870
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
950 }
e116fee2b30c [gaim-migrate @ 14161]
Joshua Blanton <jblanton@cs.ohiou.edu>
parents: 11850
diff changeset
951
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
952 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
953 add_popular_statuses(PidginStatusBox *statusbox)
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
954 {
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
955 GList *list, *cur;
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
956
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
957 list = purple_savedstatuses_get_popular(6);
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
958 if (list == NULL)
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
959 /* Odd... oh well, nothing we can do about it. */
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
960 return;
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
961
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
962 pidgin_status_box_add_separator(statusbox);
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
963
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
964 for (cur = list; cur != NULL; cur = cur->next)
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
965 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
966 PurpleSavedStatus *saved = cur->data;
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
967 const gchar *message;
13099
35c9898ba2f1 [gaim-migrate @ 15460]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
968 gchar *stripped = NULL;
30707
cdaabb0e9f13 I think this is marginally better to read.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30706
diff changeset
969 PidginStatusBoxItemType type;
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
970
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
971 if (purple_savedstatus_is_transient(saved))
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
972 {
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
973 /*
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
974 * Transient statuses do not have a title, so the savedstatus
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
975 * API returns the message when purple_savedstatus_get_title() is
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
976 * called, so we don't need to get the message a second time.
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
977 */
30707
cdaabb0e9f13 I think this is marginally better to read.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30706
diff changeset
978 type = PIDGIN_STATUS_BOX_TYPE_POPULAR;
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
979 }
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
980 else
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
981 {
30707
cdaabb0e9f13 I think this is marginally better to read.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30706
diff changeset
982 type = PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR;
cdaabb0e9f13 I think this is marginally better to read.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 30706
diff changeset
983
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
984 message = purple_savedstatus_get_message(saved);
13099
35c9898ba2f1 [gaim-migrate @ 15460]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
985 if (message != NULL)
35c9898ba2f1 [gaim-migrate @ 15460]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
986 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
987 stripped = purple_markup_strip_html(message);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
988 purple_util_chrreplace(stripped, '\n', ' ');
13099
35c9898ba2f1 [gaim-migrate @ 15460]
Richard Laager <rlaager@pidgin.im>
parents: 13091
diff changeset
989 }
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
990 }
13091
b5ed878998dd [gaim-migrate @ 15452]
Mark Doliner <markdoliner@pidgin.im>
parents: 13080
diff changeset
991
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
992 pidgin_status_box_add(statusbox, type,
26845
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
993 NULL, purple_savedstatus_get_title(saved), stripped,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
994 GINT_TO_POINTER(purple_savedstatus_get_creation_time(saved)));
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
995 g_free(stripped);
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
996 }
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
997
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
998 g_list_free(list);
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
999 }
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
1000
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1001 /* This returns NULL if the active accounts don't have identical
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1002 * statuses and a token account if they do */
22104
56970903b8e9 Probe for -Wstrict-prototypes to get some more warnings. I then cleaned up
Richard Laager <rlaager@pidgin.im>
parents: 22086
diff changeset
1003 static PurpleAccount* check_active_accounts_for_identical_statuses(void)
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1004 {
28748
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1005 GList *iter, *active_accts = purple_accounts_get_all_active();
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1006 PurpleAccount *acct1 = NULL;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1007 const char *prpl1 = NULL;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1008
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1009 if (active_accts) {
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1010 acct1 = active_accts->data;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1011 prpl1 = purple_account_get_protocol_id(acct1);
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1012 } else {
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1013 /* there's no enabled account */
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1014 return NULL;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1015 }
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1016
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1017 /* start at the second account */
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1018 for (iter = active_accts->next; iter; iter = iter->next) {
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1019 PurpleAccount *acct2 = iter->data;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1020 GList *s1, *s2;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1021
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1022 if (!g_str_equal(prpl1, purple_account_get_protocol_id(acct2))) {
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1023 acct1 = NULL;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1024 break;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1025 }
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1026
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1027 for (s1 = purple_account_get_status_types(acct1),
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1028 s2 = purple_account_get_status_types(acct2); s1 && s2;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1029 s1 = s1->next, s2 = s2->next) {
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1030 PurpleStatusType *st1 = s1->data, *st2 = s2->data;
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1031 /* TODO: Are these enough to consider the statuses identical? */
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1032 if (purple_status_type_get_primitive(st1) != purple_status_type_get_primitive(st2)
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1033 || strcmp(purple_status_type_get_id(st1), purple_status_type_get_id(st2))
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1034 || strcmp(purple_status_type_get_name(st1), purple_status_type_get_name(st2))) {
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1035 acct1 = NULL;
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1036 break;
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1037 }
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1038 }
28748
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1039
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1040 if (s1 != s2) {/* Will both be NULL if matched */
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1041 acct1 = NULL;
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1042 break;
28748
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1043 }
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1044 }
28748
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1045
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1046 g_list_free(active_accts);
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1047
28748
53f15767337e only need to loop over active accounts once for this
Ka-Hing Cheung <khc@pidgin.im>
parents: 28747
diff changeset
1048 return acct1;
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1049 }
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1050
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1051 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1052 add_account_statuses(PidginStatusBox *status_box, PurpleAccount *account)
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1053 {
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1054 /* Per-account */
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
1055 GList *l;
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1056
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1057 for (l = purple_account_get_status_types(account); l != NULL; l = l->next)
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1058 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1059 PurpleStatusType *status_type = (PurpleStatusType *)l->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1060 PurpleStatusPrimitive prim;
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1061
23408
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
1062 if (!purple_status_type_is_user_settable(status_type) ||
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
1063 purple_status_type_is_independent(status_type))
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1064 continue;
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1065
23408
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
1066 prim = purple_status_type_get_primitive(status_type);
3dc9e98485aa Don't include 'Listening to music' in the per-account statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 23405
diff changeset
1067
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1068 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box),
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1069 PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1070 purple_status_type_get_name(status_type),
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1071 NULL,
30706
612b36b49058 Kill off many dead assignments and any useless remaining variables.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 29689
diff changeset
1072 GINT_TO_POINTER(prim));
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1073 }
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1074 }
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1075
18319
e5f4aef72165 disapproval of revision '146d6831fc3d1fdf025c5ae60bc4976eaed5c987'
Sean Egan <seanegan@pidgin.im>
parents: 18318
diff changeset
1076 static void
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1077 pidgin_status_box_regenerate(PidginStatusBox *status_box, gboolean status_changed)
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1078 {
12256
2ad29826207a [gaim-migrate @ 14558]
Sean Egan <seanegan@pidgin.im>
parents: 12244
diff changeset
1079 /* Unset the model while clearing it */
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1080 gtk_tree_view_set_model(GTK_TREE_VIEW(status_box->tree_view), NULL);
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1081 gtk_list_store_clear(status_box->dropdown_store);
13242
3b87f908bb32 [gaim-migrate @ 15607]
Kevin Hunter
parents: 13231
diff changeset
1082 /* Don't set the model until the new statuses have been added to the box.
3b87f908bb32 [gaim-migrate @ 15607]
Kevin Hunter
parents: 13231
diff changeset
1083 * What is presumably a bug in Gtk < 2.4 causes things to get all confused
3b87f908bb32 [gaim-migrate @ 15607]
Kevin Hunter
parents: 13231
diff changeset
1084 * if we do this here. */
3b87f908bb32 [gaim-migrate @ 15607]
Kevin Hunter
parents: 13231
diff changeset
1085 /* gtk_combo_box_set_model(GTK_COMBO_BOX(status_box), GTK_TREE_MODEL(status_box->dropdown_store)); */
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12275
diff changeset
1086
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1087 if (status_box->account == NULL)
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
1088 {
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1089 /* Do all the currently enabled accounts have the same statuses?
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1090 * If so, display them instead of our global list.
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1091 */
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1092 if (status_box->token_status_account) {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1093 add_account_statuses(status_box, status_box->token_status_account);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1094 } else {
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1095 /* Global */
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1096 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Available"), NULL, GINT_TO_POINTER(PURPLE_STATUS_AVAILABLE));
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1097 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Away"), NULL, GINT_TO_POINTER(PURPLE_STATUS_AWAY));
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1098 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Do not disturb"), NULL, GINT_TO_POINTER(PURPLE_STATUS_UNAVAILABLE));
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1099 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Invisible"), NULL, GINT_TO_POINTER(PURPLE_STATUS_INVISIBLE));
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1100 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_PRIMITIVE, NULL, _("Offline"), NULL, GINT_TO_POINTER(PURPLE_STATUS_OFFLINE));
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1101 }
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
1102
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
1103 add_popular_statuses(status_box);
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
1104
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1105 pidgin_status_box_add_separator(PIDGIN_STATUS_BOX(status_box));
20293
81d324f460bd applied changes from 1f57ebe4e6d16159c74db823ecff2ec0f4c46936
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20289
diff changeset
1106 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_CUSTOM, NULL, _("New status..."), NULL, NULL);
81d324f460bd applied changes from 1f57ebe4e6d16159c74db823ecff2ec0f4c46936
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20289
diff changeset
1107 pidgin_status_box_add(PIDGIN_STATUS_BOX(status_box), PIDGIN_STATUS_BOX_TYPE_SAVED, NULL, _("Saved statuses..."), NULL, NULL);
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
1108
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1109 status_menu_refresh_iter(status_box, status_changed);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1110 pidgin_status_box_refresh(status_box);
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1111
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1112 } else {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1113 add_account_statuses(status_box, status_box->account);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1114 update_to_reflect_account_status(status_box, status_box->account,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1115 purple_account_get_active_status(status_box->account));
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1116 }
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1117 gtk_tree_view_set_model(GTK_TREE_VIEW(status_box->tree_view), GTK_TREE_MODEL(status_box->dropdown_store));
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1118 gtk_tree_view_set_search_column(GTK_TREE_VIEW(status_box->tree_view), TEXT_COLUMN);
11732
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1119 }
aba36f84241a [gaim-migrate @ 14023]
Tim Ringenbach <marv@pidgin.im>
parents: 11729
diff changeset
1120
12827
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1121 static gboolean combo_box_scroll_event_cb(GtkWidget *w, GdkEventScroll *event, GtkIMHtml *imhtml)
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1122 {
18319
e5f4aef72165 disapproval of revision '146d6831fc3d1fdf025c5ae60bc4976eaed5c987'
Sean Egan <seanegan@pidgin.im>
parents: 18318
diff changeset
1123 pidgin_status_box_popup(PIDGIN_STATUS_BOX(w));
12827
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1124 return TRUE;
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1125 }
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1126
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1127 static gboolean imhtml_scroll_event_cb(GtkWidget *w, GdkEventScroll *event, GtkIMHtml *imhtml)
12075
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1128 {
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1129 if (event->direction == GDK_SCROLL_UP)
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1130 gtk_imhtml_page_up(imhtml);
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1131 else if (event->direction == GDK_SCROLL_DOWN)
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1132 gtk_imhtml_page_down(imhtml);
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1133 return TRUE;
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1134 }
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1135
22032
8136dd5eeda3 Make some more event handlers return appropriate gboolean values. This turns
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 21630
diff changeset
1136 static gboolean imhtml_remove_focus(GtkWidget *w, GdkEventKey *event, PidginStatusBox *status_box)
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1137 {
23032
0acae5b01488 Patch from QuLogic to fix tab-navigation in the statusbox. And a few
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22882
diff changeset
1138 if (event->keyval == GDK_Tab || event->keyval == GDK_KP_Tab || event->keyval == GDK_ISO_Left_Tab)
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1139 {
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1140 /* If last inserted character is a tab, then remove the focus from here */
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1141 GtkWidget *top = gtk_widget_get_toplevel(w);
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1142 g_signal_emit_by_name(G_OBJECT(top), "move_focus",
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1143 (event->state & GDK_SHIFT_MASK) ?
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1144 GTK_DIR_TAB_BACKWARD: GTK_DIR_TAB_FORWARD);
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1145 return TRUE;
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1146 }
22882
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1147 if (status_box->typing == 0)
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1148 return FALSE;
13805
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1149
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1150 /* Reset the status if Escape was pressed */
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1151 if (event->keyval == GDK_Escape)
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1152 {
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
1153 purple_timeout_remove(status_box->typing);
13805
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1154 status_box->typing = 0;
27032
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
1155 gtk_imhtml_set_populate_primary_clipboard(
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
1156 GTK_IMHTML(status_box->imhtml), TRUE);
13832
2719e29e6e9e [gaim-migrate @ 16279]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13805
diff changeset
1157 if (status_box->account != NULL)
2719e29e6e9e [gaim-migrate @ 16279]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13805
diff changeset
1158 update_to_reflect_account_status(status_box, status_box->account,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1159 purple_account_get_active_status(status_box->account));
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1160 else {
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1161 status_menu_refresh_iter(status_box, TRUE);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1162 pidgin_status_box_refresh(status_box);
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1163 }
13805
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1164 return TRUE;
58441e81b8f6 [gaim-migrate @ 16217]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13804
diff changeset
1165 }
14097
0c340861ab79 [gaim-migrate @ 16638]
Mark Doliner <markdoliner@pidgin.im>
parents: 13832
diff changeset
1166
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1167 pidgin_status_box_pulse_typing(status_box);
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
1168 purple_timeout_remove(status_box->typing);
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
1169 status_box->typing = purple_timeout_add_seconds(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
12460
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
1170
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1171 return FALSE;
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1172 }
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1173
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1174 static gboolean
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1175 dropdown_store_row_separator_func(GtkTreeModel *model,
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1176 GtkTreeIter *iter, gpointer data)
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1177 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1178 PidginStatusBoxItemType type;
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1179
11885
0c447c0ced93 [gaim-migrate @ 14176]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11870
diff changeset
1180 gtk_tree_model_get(model, iter, TYPE_COLUMN, &type, -1);
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1181
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1182 if (type == PIDGIN_STATUS_BOX_TYPE_SEPARATOR)
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1183 return TRUE;
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1184
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1185 return FALSE;
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1186 }
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
1187
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1188 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1189 cache_pixbufs(PidginStatusBox *status_box)
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1190 {
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1191 GtkIconSize icon_size;
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1192 int i;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1193
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1194 g_object_set(G_OBJECT(status_box->icon_rend), "xpad", 3, NULL);
15497
92f02f4bd5ee Dialog icon changes
Sean Egan <seanegan@pidgin.im>
parents: 15474
diff changeset
1195 icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL);
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1196
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1197 for (i = 0; i < G_N_ELEMENTS(status_box->connecting_pixbufs); i++) {
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1198 if (status_box->connecting_pixbufs[i] != NULL)
26828
ca76e7ad0d4b Oops, I must have been tired. I only replaced the first occurrence of these
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
1199 g_object_unref(G_OBJECT(status_box->connecting_pixbufs[i]));
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1200 if (connecting_stock_ids[i])
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1201 status_box->connecting_pixbufs[i] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1202 connecting_stock_ids[i], icon_size, "PidginStatusBox");
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1203 else
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1204 status_box->connecting_pixbufs[i] = NULL;
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1205 }
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1206 status_box->connecting_index = 0;
24434
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
1207
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1208
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1209 for (i = 0; i < G_N_ELEMENTS(status_box->typing_pixbufs); i++) {
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1210 if (status_box->typing_pixbufs[i] != NULL)
26828
ca76e7ad0d4b Oops, I must have been tired. I only replaced the first occurrence of these
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 26820
diff changeset
1211 g_object_unref(G_OBJECT(status_box->typing_pixbufs[i]));
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1212 if (typing_stock_ids[i])
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1213 status_box->typing_pixbufs[i] = gtk_widget_render_icon (GTK_WIDGET(status_box->vbox),
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1214 typing_stock_ids[i], icon_size, "PidginStatusBox");
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1215 else
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1216 status_box->typing_pixbufs[i] = NULL;
22305
400588b863be Fix some small leaks when destroying a statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22229
diff changeset
1217 }
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1218 status_box->typing_index = 0;
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1219 }
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1220
22836
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
1221 static void account_enabled_cb(PurpleAccount *acct, PidginStatusBox *status_box)
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
1222 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1223 PurpleAccount *initial_token_acct = status_box->token_status_account;
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1224
22836
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
1225 if (status_box->account)
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
1226 return;
5ddb441e37e4 Ignore token_status_account on account-specific status boxes. This should
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22618
diff changeset
1227
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1228 status_box->token_status_account = check_active_accounts_for_identical_statuses();
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1229
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1230 /* Regenerate the list if it has changed */
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1231 if (initial_token_acct != status_box->token_status_account) {
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1232 pidgin_status_box_regenerate(status_box, TRUE);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1233 }
14703
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1234
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1235 }
3e5228ca175b [gaim-migrate @ 17387]
Daniel Atallah <datallah@pidgin.im>
parents: 14698
diff changeset
1236
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1237 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1238 current_savedstatus_changed_cb(PurpleSavedStatus *now, PurpleSavedStatus *old, PidginStatusBox *status_box)
11954
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11951
diff changeset
1239 {
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
1240 /* Make sure our current status is added to the list of popular statuses */
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1241 pidgin_status_box_regenerate(status_box, TRUE);
11954
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11951
diff changeset
1242 }
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11951
diff changeset
1243
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1244 static void
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1245 saved_status_updated_cb(PurpleSavedStatus *status, PidginStatusBox *status_box)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1246 {
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1247 pidgin_status_box_regenerate(status_box,
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1248 purple_savedstatus_get_current() == status);
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1249 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1250
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1251 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1252 spellcheck_prefs_cb(const char *name, PurplePrefType type,
12816
5f93e09fa9a6 [gaim-migrate @ 15164]
Mark Doliner <markdoliner@pidgin.im>
parents: 12782
diff changeset
1253 gconstpointer value, gpointer data)
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1254 {
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1255 #ifdef USE_GTKSPELL
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1256 PidginStatusBox *status_box = (PidginStatusBox *)data;
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1257
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1258 if (value)
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1259 pidgin_setup_gtkspell(GTK_TEXT_VIEW(status_box->imhtml));
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1260 else
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1261 {
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1262 GtkSpell *spell;
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1263 spell = gtkspell_get_from_text_view(GTK_TEXT_VIEW(status_box->imhtml));
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1264 gtkspell_detach(spell);
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1265 }
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1266 #endif
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1267 }
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1268
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1269 #if 0
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1270 static gboolean button_released_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *box)
12074
c377fb120662 [gaim-migrate @ 14370]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12060
diff changeset
1271 {
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12275
diff changeset
1272
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1273 if (event->button != 1)
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1274 return FALSE;
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1275 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(box->toggle_button), FALSE);
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1276 if (!box->imhtml_visible)
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1277 g_signal_emit_by_name(G_OBJECT(box), "changed", NULL, NULL);
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1278 return TRUE;
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1279 }
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1280
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1281 static gboolean button_pressed_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *box)
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1282 {
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1283 if (event->button != 1)
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1284 return FALSE;
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1285 gtk_combo_box_popup(GTK_COMBO_BOX(box));
16413
7fae6f309bd7 Death to // comments.
Richard Laager <rlaager@pidgin.im>
parents: 16402
diff changeset
1286 /* Disabled until button_released_cb works */
7fae6f309bd7 Death to // comments.
Richard Laager <rlaager@pidgin.im>
parents: 16402
diff changeset
1287 #if 0
7fae6f309bd7 Death to // comments.
Richard Laager <rlaager@pidgin.im>
parents: 16402
diff changeset
1288 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(box->toggle_button), TRUE);
7fae6f309bd7 Death to // comments.
Richard Laager <rlaager@pidgin.im>
parents: 16402
diff changeset
1289 #endif
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1290 return TRUE;
12074
c377fb120662 [gaim-migrate @ 14370]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12060
diff changeset
1291 }
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1292 #endif
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1293
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1294 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1295 pidgin_status_box_list_position (PidginStatusBox *status_box, int *x, int *y, int *width, int *height)
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1296 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1297 GdkScreen *screen;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1298 gint monitor_num;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1299 GdkRectangle monitor;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1300 GtkRequisition popup_req;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1301 GtkPolicyType hpolicy, vpolicy;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1302
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1303 gdk_window_get_origin (GTK_WIDGET(status_box)->window, x, y);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1304
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1305 *x += GTK_WIDGET(status_box)->allocation.x;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1306 *y += GTK_WIDGET(status_box)->allocation.y;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1307
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1308 *width = GTK_WIDGET(status_box)->allocation.width;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1309
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1310 hpolicy = vpolicy = GTK_POLICY_NEVER;
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1311 g_object_set(G_OBJECT(status_box->scrolled_window),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1312 "hscrollbar-policy", hpolicy,
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1313 "vscrollbar-policy", vpolicy,
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1314 NULL);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1315 gtk_widget_size_request (status_box->popup_frame, &popup_req);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1316
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1317 if (popup_req.width > *width)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1318 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1319 hpolicy = GTK_POLICY_ALWAYS;
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1320 g_object_set(G_OBJECT(status_box->scrolled_window),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1321 "hscrollbar-policy", hpolicy,
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1322 "vscrollbar-policy", vpolicy,
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1323 NULL);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1324 gtk_widget_size_request (status_box->popup_frame, &popup_req);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1325 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1326
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1327 *height = popup_req.height;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1328
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1329 screen = gtk_widget_get_screen (GTK_WIDGET (status_box));
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1330 monitor_num = gdk_screen_get_monitor_at_window (screen,
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1331 GTK_WIDGET (status_box)->window);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1332 gdk_screen_get_monitor_geometry (screen, monitor_num, &monitor);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1333
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1334 if (*x < monitor.x)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1335 *x = monitor.x;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1336 else if (*x + *width > monitor.x + monitor.width)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1337 *x = monitor.x + monitor.width - *width;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1338
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1339 if (*y + GTK_WIDGET(status_box)->allocation.height + *height <= monitor.y + monitor.height)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1340 *y += GTK_WIDGET(status_box)->allocation.height;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1341 else if (*y - *height >= monitor.y)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1342 *y -= *height;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1343 else if (monitor.y + monitor.height - (*y + GTK_WIDGET(status_box)->allocation.height) > *y - monitor.y)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1344 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1345 *y += GTK_WIDGET(status_box)->allocation.height;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1346 *height = monitor.y + monitor.height - *y;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1347 }
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1348 else
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1349 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1350 *height = *y - monitor.y;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1351 *y = monitor.y;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1352 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1353
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1354 if (popup_req.height > *height)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1355 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1356 vpolicy = GTK_POLICY_ALWAYS;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1357
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1358 g_object_set(G_OBJECT(status_box->scrolled_window),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1359 "hscrollbar-policy", hpolicy,
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1360 "vscrollbar-policy", vpolicy,
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1361 NULL);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1362 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1363 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1364
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1365 static gboolean
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1366 popup_grab_on_window (GdkWindow *window,
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1367 guint32 activate_time,
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1368 gboolean grab_keyboard)
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1369 {
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1370 if ((gdk_pointer_grab (window, TRUE,
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1371 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1372 GDK_POINTER_MOTION_MASK,
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1373 NULL, NULL, activate_time) == 0))
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1374 {
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1375 if (!grab_keyboard || gdk_keyboard_grab (window, TRUE, activate_time) == 0)
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1376 return TRUE;
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1377 else {
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1378 gdk_display_pointer_ungrab (gdk_drawable_get_display (window), activate_time);
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1379 return FALSE;
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1380 }
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1381 }
29496
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1382
8807ee3e55c5 Start of killing off unneeded GTK_CHECK_VERSION checks in pidgin. Refs #10024
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 28087
diff changeset
1383 return FALSE;
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1384 }
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1385
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1386
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1387 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1388 pidgin_status_box_popup(PidginStatusBox *box)
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1389 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1390 int width, height, x, y;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1391 pidgin_status_box_list_position (box, &x, &y, &width, &height);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1392
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1393 gtk_widget_set_size_request (box->popup_window, width, height);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1394 gtk_window_move (GTK_WINDOW (box->popup_window), x, y);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1395 gtk_widget_show(box->popup_window);
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1396 gtk_widget_grab_focus (box->tree_view);
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1397 if (!popup_grab_on_window (box->popup_window->window,
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1398 GDK_CURRENT_TIME, TRUE)) {
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1399 gtk_widget_hide (box->popup_window);
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1400 return;
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1401 }
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1402 gtk_grab_add (box->popup_window);
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1403 /*box->popup_in_progress = TRUE;*/
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1404 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (box->toggle_button),
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1405 TRUE);
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1406
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1407 if (box->active_row) {
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1408 GtkTreePath *path = gtk_tree_row_reference_get_path(box->active_row);
15335
be7b92050bad [gaim-migrate @ 18063]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15320
diff changeset
1409 gtk_tree_view_set_cursor(GTK_TREE_VIEW(box->tree_view), path, NULL, FALSE);
15224
41128f894bbe [gaim-migrate @ 17948]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15216
diff changeset
1410 gtk_tree_path_free(path);
15182
7c8a78f32f37 [gaim-migrate @ 17906]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15180
diff changeset
1411 }
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1412 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1413
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1414 static void
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1415 pidgin_status_box_popdown(PidginStatusBox *box)
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1416 {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1417 gtk_widget_hide(box->popup_window);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1418 box->popup_in_progress = FALSE;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1419 gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (box->toggle_button),
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1420 FALSE);
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1421 gtk_grab_remove (box->popup_window);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1422 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1423
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1424 static gboolean
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1425 toggle_key_press_cb(GtkWidget *widget, GdkEventKey *event, PidginStatusBox *box)
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1426 {
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1427 switch (event->keyval) {
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1428 case GDK_Return:
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1429 case GDK_KP_Enter:
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1430 case GDK_KP_Space:
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1431 case GDK_space:
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1432 if (!box->popup_in_progress) {
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1433 pidgin_status_box_popup (box);
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1434 box->popup_in_progress = TRUE;
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1435 } else {
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1436 pidgin_status_box_popdown(box);
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1437 }
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1438 return TRUE;
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1439 default:
23032
0acae5b01488 Patch from QuLogic to fix tab-navigation in the statusbox. And a few
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22882
diff changeset
1440 return FALSE;
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1441 }
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1442 }
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1443
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1444 static gboolean
19576
09a205dd2fea Bring up statusbox menu on button-down instead of button-up. Fixes #1437
Sean Egan <seanegan@pidgin.im>
parents: 19455
diff changeset
1445 toggled_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *box)
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1446 {
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1447 if (!box->popup_in_progress)
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1448 pidgin_status_box_popup (box);
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1449 else
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1450 pidgin_status_box_popdown(box);
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1451 return TRUE;
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1452 }
12074
c377fb120662 [gaim-migrate @ 14370]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12060
diff changeset
1453
11954
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11951
diff changeset
1454 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1455 buddy_icon_set_cb(const char *filename, PidginStatusBox *box)
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1456 {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1457 PurpleStoredImage *img = NULL;
14203
f3a50c328ddc [gaim-migrate @ 16783]
Mark Doliner <markdoliner@pidgin.im>
parents: 14196
diff changeset
1458
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1459 if (box->account) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1460 PurplePlugin *plug = purple_find_prpl(purple_account_get_protocol_id(box->account));
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1461 if (plug) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1462 PurplePluginProtocolInfo *prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plug);
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1463 if (prplinfo && prplinfo->icon_spec.format) {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1464 gpointer data = NULL;
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1465 size_t len = 0;
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1466 if (filename)
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1467 data = pidgin_convert_buddy_icon(plug, filename, &len);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1468 img = purple_buddy_icons_set_account_icon(box->account, data, len);
25745
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1469 if (img)
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1470 /*
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1471 * set_account_icon doesn't give us a reference, but we
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1472 * unref one below (for the other code path)
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1473 */
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1474 purple_imgstore_ref(img);
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1475
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1476 purple_account_set_buddy_icon_path(box->account, filename);
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1477
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1478 purple_account_set_bool(box->account, "use-global-buddyicon", (filename != NULL));
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1479 }
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1480 }
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1481 } else {
18122
9bf9970c1b6a disapproval of revision '2d8ea56b90971e7851442d96b7d74ecb4f052126'
Richard Laager <rlaager@pidgin.im>
parents: 18121
diff changeset
1482 GList *accounts;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1483 for (accounts = purple_accounts_get_all(); accounts != NULL; accounts = accounts->next) {
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1484 PurpleAccount *account = accounts->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1485 PurplePlugin *plug = purple_find_prpl(purple_account_get_protocol_id(account));
14217
881c0b035a96 [gaim-migrate @ 16800]
Sean Egan <seanegan@pidgin.im>
parents: 14216
diff changeset
1486 if (plug) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1487 PurplePluginProtocolInfo *prplinfo = PURPLE_PLUGIN_PROTOCOL_INFO(plug);
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1488 if (prplinfo != NULL &&
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1489 purple_account_get_bool(account, "use-global-buddyicon", TRUE) &&
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1490 prplinfo->icon_spec.format) {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1491 gpointer data = NULL;
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1492 size_t len = 0;
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1493 if (filename)
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1494 data = pidgin_convert_buddy_icon(plug, filename, &len);
25745
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1495 purple_buddy_icons_set_account_icon(account, data, len);
16723
1fb1c009f3d0 This seems to fix a problem with the global status selector, and some
Mark Doliner <markdoliner@pidgin.im>
parents: 16711
diff changeset
1496 purple_account_set_buddy_icon_path(account, filename);
14217
881c0b035a96 [gaim-migrate @ 16800]
Sean Egan <seanegan@pidgin.im>
parents: 14216
diff changeset
1497 }
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1498 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1499 }
16742
4359a1e75fa2 Make the icon show up when you change the global buddy icon pref, even if all the accounts have per-account icons.
Kevin Stange <kstange@pidgin.im>
parents: 16741
diff changeset
1500
4359a1e75fa2 Make the icon show up when you change the global buddy icon pref, even if all the accounts have per-account icons.
Kevin Stange <kstange@pidgin.im>
parents: 16741
diff changeset
1501 /* Even if no accounts were processed, load the icon that was set. */
4359a1e75fa2 Make the icon show up when you change the global buddy icon pref, even if all the accounts have per-account icons.
Kevin Stange <kstange@pidgin.im>
parents: 16741
diff changeset
1502 if (filename != NULL)
25745
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1503 img = purple_imgstore_new_from_file(filename);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1504 }
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1505
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
1506 pidgin_status_box_set_buddy_icon(box, img);
25745
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1507 if (img)
48b7ebd7fcc7 Fix the crash/leaks in statusbox
Paul Aurich <darkrain42@pidgin.im>
parents: 24508
diff changeset
1508 purple_imgstore_unref(img);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1509 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1510
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1511 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1512 remove_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
15082
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1513 {
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1514 if (box->account == NULL)
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1515 /* The pref-connect callback does the actual work */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15999
diff changeset
1516 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon", NULL);
15082
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1517 else
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1518 buddy_icon_set_cb(NULL, box);
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1519
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1520 gtk_widget_destroy(box->icon_box_menu);
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1521 box->icon_box_menu = NULL;
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1522 }
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1523
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1524 static void
27117
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1525 choose_buddy_icon_cb(GtkWidget *w, PidginStatusBox *box)
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1526 {
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1527 if (box->buddy_icon_sel) {
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1528 gtk_window_present(GTK_WINDOW(box->buddy_icon_sel));
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1529 } else {
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1530 box->buddy_icon_sel = pidgin_buddy_icon_chooser_new(GTK_WINDOW(gtk_widget_get_toplevel(w)), icon_choose_cb, box);
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1531 gtk_widget_show_all(box->buddy_icon_sel);
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1532 }
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1533 }
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1534
3095ed1fc101 A patch from nops to add a "Select Buddy Icon" (my term, the original patch
Richard Laager <rlaager@pidgin.im>
parents: 27054
diff changeset
1535 static void
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1536 icon_choose_cb(const char *filename, gpointer data)
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1537 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1538 PidginStatusBox *box = data;
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1539 if (filename) {
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1540 if (box->account == NULL)
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1541 /* The pref-connect callback does the actual work */
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15999
diff changeset
1542 purple_prefs_set_path(PIDGIN_PREFS_ROOT "/accounts/buddyicon", filename);
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1543 else
15082
ec55357842d3 [gaim-migrate @ 17802]
Daniel Atallah <datallah@pidgin.im>
parents: 15079
diff changeset
1544 buddy_icon_set_cb(filename, box);
15079
835ed45157ce [gaim-migrate @ 17799]
Daniel Atallah <datallah@pidgin.im>
parents: 15064
diff changeset
1545 }
14847
5c766c6e8e3d [gaim-migrate @ 17549]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14809
diff changeset
1546
5c766c6e8e3d [gaim-migrate @ 17549]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14809
diff changeset
1547 box->buddy_icon_sel = NULL;
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1548 }
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1549
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1550 static void
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1551 update_buddyicon_cb(const char *name, PurplePrefType type,
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1552 gconstpointer value, gpointer data)
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1553 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1554 buddy_icon_set_cb(value, (PidginStatusBox*) data);
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1555 }
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1556
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1557 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1558 treeview_activate_current_selection(PidginStatusBox *status_box, GtkTreePath *path)
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1559 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1560 if (status_box->active_row)
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1561 gtk_tree_row_reference_free(status_box->active_row);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1562
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1563 status_box->active_row = gtk_tree_row_reference_new(GTK_TREE_MODEL(status_box->dropdown_store), path);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1564 pidgin_status_box_popdown (status_box);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1565 pidgin_status_box_changed(status_box);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1566 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1567
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1568 static void tree_view_delete_current_selection_cb(gpointer data)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1569 {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1570 PurpleSavedStatus *saved;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1571
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1572 saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data));
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1573 g_return_if_fail(saved != NULL);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1574
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1575 if (purple_savedstatus_get_current() != saved)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1576 purple_savedstatus_delete_by_status(saved);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1577 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1578
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1579 static void
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1580 tree_view_delete_current_selection(PidginStatusBox *status_box, GtkTreePath *path)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1581 {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1582 GtkTreeIter iter;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1583 gpointer data;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1584 PurpleSavedStatus *saved;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1585 gchar *msg;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1586
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1587 if (status_box->active_row) {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1588 /* don't delete active status */
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1589 if (gtk_tree_path_compare(path, gtk_tree_row_reference_get_path(status_box->active_row)) == 0)
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1590 return;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1591 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1592
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1593 if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path))
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1594 return;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1595
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1596 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1597 DATA_COLUMN, &data,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1598 -1);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1599
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1600 saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data));
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1601 g_return_if_fail(saved != NULL);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1602 if (saved == purple_savedstatus_get_current())
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1603 return;
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1604
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1605 msg = g_strdup_printf(_("Are you sure you want to delete %s?"), purple_savedstatus_get_title(saved));
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1606
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1607 purple_request_action(saved, NULL, msg, NULL, 0,
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1608 NULL, NULL, NULL,
21175
c6d76b49c206 disapproval of revision '8ba833993a115415727bb1b70362e0bd1603c169'
Richard Laager <rlaager@pidgin.im>
parents: 21174
diff changeset
1609 data, 2,
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1610 _("Delete"), tree_view_delete_current_selection_cb,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1611 _("Cancel"), NULL);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1612
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1613 g_free(msg);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1614
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1615 pidgin_status_box_popdown(status_box);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1616 }
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1617
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1618 static gboolean
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1619 treeview_button_release_cb(GtkWidget *widget, GdkEventButton *event, PidginStatusBox *status_box)
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1620 {
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1621 GtkTreePath *path = NULL;
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1622 int ret;
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1623 GtkWidget *ewidget = gtk_get_event_widget ((GdkEvent *)event);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1624
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1625 if (ewidget != status_box->tree_view) {
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1626 if (ewidget == status_box->toggle_button &&
15176
44bc99559266 [gaim-migrate @ 17900]
Sean Egan <seanegan@pidgin.im>
parents: 15174
diff changeset
1627 status_box->popup_in_progress &&
17082
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1628 gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (status_box->toggle_button))) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1629 pidgin_status_box_popdown (status_box);
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1630 return TRUE;
19659
acdd4962bf80 Allow you to click on statusbox again and keep it open.
Sean Egan <seanegan@pidgin.im>
parents: 19576
diff changeset
1631 } else if (ewidget == status_box->toggle_button) {
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24508
diff changeset
1632 status_box->popup_in_progress = TRUE;
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1633 }
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1634
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1635 /* released outside treeview */
19659
acdd4962bf80 Allow you to click on statusbox again and keep it open.
Sean Egan <seanegan@pidgin.im>
parents: 19576
diff changeset
1636 if (ewidget != status_box->toggle_button) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1637 pidgin_status_box_popdown (status_box);
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1638 return TRUE;
19659
acdd4962bf80 Allow you to click on statusbox again and keep it open.
Sean Egan <seanegan@pidgin.im>
parents: 19576
diff changeset
1639 }
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1640
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1641 return FALSE;
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1642 }
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1643
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1644 ret = gtk_tree_view_get_path_at_pos (GTK_TREE_VIEW (status_box->tree_view),
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1645 event->x, event->y,
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1646 &path,
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1647 NULL, NULL, NULL);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1648
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1649 if (!ret)
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1650 return TRUE; /* clicked outside window? */
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1651
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1652 treeview_activate_current_selection(status_box, path);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1653 gtk_tree_path_free (path);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1654
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1655 return TRUE;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1656 }
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1657
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1658 static gboolean
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1659 treeview_key_press_event(GtkWidget *widget,
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1660 GdkEventKey *event, PidginStatusBox *box)
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1661 {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1662 if (box->popup_in_progress) {
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1663 if (event->keyval == GDK_Escape) {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1664 pidgin_status_box_popdown(box);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1665 return TRUE;
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1666 } else {
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1667 GtkTreeSelection *sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(box->tree_view));
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1668 GtkTreeIter iter;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1669 GtkTreePath *path;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1670
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1671 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) {
18259
27b06926c3d7 Let non-delete keys operate.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
1672 gboolean ret = TRUE;
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1673 path = gtk_tree_model_get_path(GTK_TREE_MODEL(box->dropdown_store), &iter);
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1674 if (event->keyval == GDK_Return) {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1675 treeview_activate_current_selection(box, path);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1676 } else if (event->keyval == GDK_Delete) {
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1677 tree_view_delete_current_selection(box, path);
18259
27b06926c3d7 Let non-delete keys operate.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
1678 } else
27b06926c3d7 Let non-delete keys operate.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
1679 ret = FALSE;
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1680
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1681 gtk_tree_path_free (path);
18259
27b06926c3d7 Let non-delete keys operate.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18239
diff changeset
1682 return ret;
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1683 }
25888
d0fdd378a635 Remove trailing whitespace
Mark Doliner <markdoliner@pidgin.im>
parents: 24508
diff changeset
1684 }
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1685 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1686 return FALSE;
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1687 }
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1688
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1689 static void
22882
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1690 imhtml_cursor_moved_cb(gpointer data, GtkMovementStep step, gint count, gboolean extend,
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1691 GtkWidget *widget)
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1692 {
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1693 /* Restart the typing timeout if arrow keys are pressed while editing the message */
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1694 PidginStatusBox *status_box = data;
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1695 if (status_box->typing == 0)
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1696 return;
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1697 imhtml_changed_cb(NULL, status_box);
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1698 }
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1699
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1700 static void
23405
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1701 treeview_cursor_changed_cb(GtkTreeView *treeview, gpointer data)
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1702 {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1703 GtkTreeSelection *sel = gtk_tree_view_get_selection (treeview);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1704 GtkTreeModel *model = GTK_TREE_MODEL (data);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1705 GtkTreeIter iter;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1706 GtkTreePath *cursor;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1707 GtkTreePath *selection;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1708 gint cmp;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1709
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1710 if (gtk_tree_selection_get_selected (sel, NULL, &iter)) {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1711 if ((selection = gtk_tree_model_get_path (model, &iter)) == NULL) {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1712 /* Shouldn't happen, but ignore anyway */
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1713 return;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1714 }
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1715 } else {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1716 /* I don't think this can happen, but we'll just ignore it */
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1717 return;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1718 }
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1719
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1720 gtk_tree_view_get_cursor (treeview, &cursor, NULL);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1721 if (cursor == NULL) {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1722 /* Probably won't happen in a 'cursor-changed' event? */
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1723 gtk_tree_path_free (selection);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1724 return;
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1725 }
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1726
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1727 cmp = gtk_tree_path_compare (cursor, selection);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1728 if (cmp < 0) {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1729 /* The cursor moved up without moving the selection, so move it up again */
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1730 gtk_tree_path_prev (cursor);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1731 gtk_tree_view_set_cursor (treeview, cursor, NULL, FALSE);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1732 } else if (cmp > 0) {
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1733 /* The cursor moved down without moving the selection, so move it down again */
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1734 gtk_tree_path_next (cursor);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1735 gtk_tree_view_set_cursor (treeview, cursor, NULL, FALSE);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1736 }
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1737
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1738 gtk_tree_path_free (selection);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1739 gtk_tree_path_free (cursor);
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1740 }
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1741
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1742 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1743 pidgin_status_box_init (PidginStatusBox *status_box)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1744 {
11400
be2052efada5 [gaim-migrate @ 13635]
Will Thompson <resiak@pidgin.im>
parents: 11347
diff changeset
1745 GtkCellRenderer *text_rend;
be2052efada5 [gaim-migrate @ 13635]
Will Thompson <resiak@pidgin.im>
parents: 11347
diff changeset
1746 GtkCellRenderer *icon_rend;
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
1747 GtkCellRenderer *emblem_rend;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1748 GtkTextBuffer *buffer;
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1749 GtkWidget *toplevel;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1750 GtkTreeSelection *sel;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1751
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1752 GTK_WIDGET_SET_FLAGS (status_box, GTK_NO_WINDOW);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1753 status_box->imhtml_visible = FALSE;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1754 status_box->network_available = purple_network_is_available();
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1755 status_box->connecting = FALSE;
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
1756 status_box->typing = 0;
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1757 status_box->toggle_button = gtk_toggle_button_new();
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1758 status_box->hbox = gtk_hbox_new(FALSE, 6);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1759 status_box->cell_view = gtk_cell_view_new();
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1760 status_box->vsep = gtk_vseparator_new();
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1761 status_box->arrow = gtk_arrow_new (GTK_ARROW_DOWN, GTK_SHADOW_NONE);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1762
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1763 status_box->store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING, G_TYPE_STRING,
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
1764 G_TYPE_STRING, G_TYPE_POINTER, GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN);
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
1765 status_box->dropdown_store = gtk_list_store_new(NUM_COLUMNS, G_TYPE_INT, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_STRING,
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
1766 G_TYPE_STRING, G_TYPE_STRING, G_TYPE_POINTER, G_TYPE_STRING, G_TYPE_BOOLEAN);
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
1767
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1768 gtk_cell_view_set_model(GTK_CELL_VIEW(status_box->cell_view), GTK_TREE_MODEL(status_box->store));
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1769 gtk_list_store_append(status_box->store, &(status_box->iter));
12074
c377fb120662 [gaim-migrate @ 14370]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12060
diff changeset
1770
22842
48b31ecd153e Give a name to the statusbox button so that it can be accessible by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22836
diff changeset
1771 atk_object_set_name(gtk_widget_get_accessible(status_box->toggle_button), _("Status Selector"));
48b31ecd153e Give a name to the statusbox button so that it can be accessible by
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22836
diff changeset
1772
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1773 gtk_container_add(GTK_CONTAINER(status_box->toggle_button), status_box->hbox);
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1774 gtk_box_pack_start(GTK_BOX(status_box->hbox), status_box->cell_view, TRUE, TRUE, 0);
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1775 gtk_box_pack_start(GTK_BOX(status_box->hbox), status_box->vsep, FALSE, FALSE, 0);
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1776 gtk_box_pack_start(GTK_BOX(status_box->hbox), status_box->arrow, FALSE, FALSE, 0);
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1777 gtk_widget_show_all(status_box->toggle_button);
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1778 gtk_button_set_focus_on_click(GTK_BUTTON(status_box->toggle_button), FALSE);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1779
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
1780 text_rend = gtk_cell_renderer_text_new();
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
1781 icon_rend = gtk_cell_renderer_pixbuf_new();
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
1782 emblem_rend = gtk_cell_renderer_pixbuf_new();
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1783 status_box->popup_window = gtk_window_new (GTK_WINDOW_POPUP);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1784
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1785 toplevel = gtk_widget_get_toplevel (GTK_WIDGET (status_box));
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1786 if (GTK_IS_WINDOW (toplevel)) {
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1787 gtk_window_set_transient_for (GTK_WINDOW (status_box->popup_window),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1788 GTK_WINDOW (toplevel));
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1789 }
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1790
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1791 gtk_window_set_resizable (GTK_WINDOW (status_box->popup_window), FALSE);
22618
4a216b99c56c Danny Baumann pointed out that the status box menu should have the appropriate
Will Thompson <resiak@pidgin.im>
parents: 22305
diff changeset
1792 gtk_window_set_type_hint (GTK_WINDOW (status_box->popup_window),
4a216b99c56c Danny Baumann pointed out that the status box menu should have the appropriate
Will Thompson <resiak@pidgin.im>
parents: 22305
diff changeset
1793 GDK_WINDOW_TYPE_HINT_POPUP_MENU);
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1794 gtk_window_set_screen (GTK_WINDOW (status_box->popup_window),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1795 gtk_widget_get_screen (GTK_WIDGET (status_box)));
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1796 status_box->popup_frame = gtk_frame_new (NULL);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1797 gtk_frame_set_shadow_type (GTK_FRAME (status_box->popup_frame),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1798 GTK_SHADOW_ETCHED_IN);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1799 gtk_container_add (GTK_CONTAINER (status_box->popup_window),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1800 status_box->popup_frame);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1801
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1802 gtk_widget_show (status_box->popup_frame);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1803
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1804 status_box->tree_view = gtk_tree_view_new ();
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1805 sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (status_box->tree_view));
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1806 gtk_tree_selection_set_mode (sel, GTK_SELECTION_BROWSE);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1807 gtk_tree_view_set_headers_visible (GTK_TREE_VIEW (status_box->tree_view),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1808 FALSE);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1809 gtk_tree_view_set_hover_selection (GTK_TREE_VIEW (status_box->tree_view),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1810 TRUE);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1811 gtk_tree_view_set_model (GTK_TREE_VIEW (status_box->tree_view),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1812 GTK_TREE_MODEL(status_box->dropdown_store));
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1813 status_box->column = gtk_tree_view_column_new ();
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1814 gtk_tree_view_append_column (GTK_TREE_VIEW (status_box->tree_view),
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1815 status_box->column);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1816 gtk_tree_view_column_pack_start(status_box->column, icon_rend, FALSE);
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1817 gtk_tree_view_column_pack_start(status_box->column, text_rend, TRUE);
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
1818 gtk_tree_view_column_pack_start(status_box->column, emblem_rend, FALSE);
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1819 gtk_tree_view_column_set_attributes(status_box->column, icon_rend, "stock-id", ICON_STOCK_COLUMN, NULL);
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1820 gtk_tree_view_column_set_attributes(status_box->column, text_rend, "markup", TEXT_COLUMN, NULL);
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
1821 gtk_tree_view_column_set_attributes(status_box->column, emblem_rend, "stock-id", EMBLEM_COLUMN, "visible", EMBLEM_VISIBLE_COLUMN, NULL);
31321
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1822
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1823 status_box->scrolled_window = pidgin_make_scrollable(status_box->tree_view, GTK_POLICY_NEVER, GTK_POLICY_NEVER, GTK_SHADOW_NONE, -1, -1);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1824 gtk_container_add (GTK_CONTAINER (status_box->popup_frame),
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1825 status_box->scrolled_window);
1fef3832cfa2 Add pidgin_make_scrollable and use it. Cleans up a bunch of duplicate code. Net code loss of 180 lines. Fixes #13073.
Gabriel Schulhof <nix@go-nix.ca>
parents: 30707
diff changeset
1826
15183
9aed18680470 [gaim-migrate @ 17907]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15182
diff changeset
1827 gtk_widget_show(status_box->tree_view);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1828 gtk_tree_view_set_search_column(GTK_TREE_VIEW(status_box->tree_view), TEXT_COLUMN);
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1829 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(status_box->tree_view),
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1830 pidgin_tree_view_search_equal_func, NULL, NULL);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
1831
13045
75f38f58edde [gaim-migrate @ 15404]
Mark Doliner <markdoliner@pidgin.im>
parents: 13044
diff changeset
1832 g_object_set(text_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1833
13044
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
1834 status_box->icon_rend = gtk_cell_renderer_pixbuf_new();
de31095dc4ff [gaim-migrate @ 15403]
Mark Doliner <markdoliner@pidgin.im>
parents: 13025
diff changeset
1835 status_box->text_rend = gtk_cell_renderer_text_new();
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
1836 emblem_rend = gtk_cell_renderer_pixbuf_new();
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
1837 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, FALSE);
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
1838 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, TRUE);
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
1839 gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(status_box->cell_view), emblem_rend, FALSE);
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
1840 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->icon_rend, "stock-id", ICON_STOCK_COLUMN, NULL);
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
1841 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), status_box->text_rend, "markup", TEXT_COLUMN, NULL);
22086
6594853346a3 Show the prpl icon in the account-specific statusboxes to avoid ambiguity.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22032
diff changeset
1842 gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(status_box->cell_view), emblem_rend, "pixbuf", EMBLEM_COLUMN, "visible", EMBLEM_VISIBLE_COLUMN, NULL);
13045
75f38f58edde [gaim-migrate @ 15404]
Mark Doliner <markdoliner@pidgin.im>
parents: 13044
diff changeset
1843 g_object_set(status_box->text_rend, "ellipsize", PANGO_ELLIPSIZE_END, NULL);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1844
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1845 status_box->vbox = gtk_vbox_new(0, FALSE);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1846 status_box->sw = pidgin_create_imhtml(FALSE, &status_box->imhtml, NULL, NULL);
12879
34ced28dd1d6 [gaim-migrate @ 15231]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12827
diff changeset
1847 gtk_imhtml_set_editable(GTK_IMHTML(status_box->imhtml), TRUE);
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12275
diff changeset
1848
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1849 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1850 #if 0
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1851 g_signal_connect(G_OBJECT(status_box->toggle_button), "button-press-event",
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1852 G_CALLBACK(button_pressed_cb), status_box);
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1853 g_signal_connect(G_OBJECT(status_box->toggle_button), "button-release-event",
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1854 G_CALLBACK(button_released_cb), status_box);
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1855 #endif
20214
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1856 g_signal_connect(G_OBJECT(status_box->toggle_button), "key-press-event",
6b993c1f4c6a applied changes from 1bdf4754abed6b49eec400ecf415a9d557bc9834
Luke Schierer <lschiere@pidgin.im>
parents: 20147
diff changeset
1857 G_CALLBACK(toggle_key_press_cb), status_box);
19576
09a205dd2fea Bring up statusbox menu on button-down instead of button-up. Fixes #1437
Sean Egan <seanegan@pidgin.im>
parents: 19455
diff changeset
1858 g_signal_connect(G_OBJECT(status_box->toggle_button), "button-press-event",
12294
4e5f06bcfaa1 [gaim-migrate @ 14598]
Etan Reisner <deryni@pidgin.im>
parents: 12286
diff changeset
1859 G_CALLBACK(toggled_cb), status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1860 g_signal_connect(G_OBJECT(buffer), "changed", G_CALLBACK(imhtml_changed_cb), status_box);
12460
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
1861 g_signal_connect(G_OBJECT(status_box->imhtml), "format_function_toggle",
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
1862 G_CALLBACK(imhtml_format_changed_cb), status_box);
22882
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1863 g_signal_connect_swapped(G_OBJECT(status_box->imhtml), "move_cursor",
ee7ba5de2f2d Reset typing timeout if arrow keys are pressed when editing status
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 22842
diff changeset
1864 G_CALLBACK(imhtml_cursor_moved_cb), status_box);
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1865 g_signal_connect(G_OBJECT(status_box->imhtml), "key_press_event",
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
1866 G_CALLBACK(imhtml_remove_focus), status_box);
11562
58d047d8e724 [gaim-migrate @ 13828]
Sean Egan <seanegan@pidgin.im>
parents: 11523
diff changeset
1867 g_signal_connect_swapped(G_OBJECT(status_box->imhtml), "message_send", G_CALLBACK(remove_typing_cb), status_box);
27033
4a28f09fcdcb Don't set the statusbox imhtml to be editable twice.
Daniel Atallah <datallah@pidgin.im>
parents: 27032
diff changeset
1868
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1869 #ifdef USE_GTKSPELL
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15999
diff changeset
1870 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/spellcheck"))
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
1871 pidgin_setup_gtkspell(GTK_TEXT_VIEW(status_box->imhtml));
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1872 #endif
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1873 gtk_widget_set_parent(status_box->vbox, GTK_WIDGET(status_box));
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1874 gtk_widget_show_all(status_box->vbox);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1875
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
1876 gtk_widget_set_parent(status_box->toggle_button, GTK_WIDGET(status_box));
12269
6e0a4c36e9da [gaim-migrate @ 14571]
Sean Egan <seanegan@pidgin.im>
parents: 12262
diff changeset
1877
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1878 gtk_box_pack_start(GTK_BOX(status_box->vbox), status_box->sw, TRUE, TRUE, 0);
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
1879
12827
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1880 g_signal_connect(G_OBJECT(status_box), "scroll_event", G_CALLBACK(combo_box_scroll_event_cb), NULL);
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12275
diff changeset
1881 g_signal_connect(G_OBJECT(status_box->imhtml), "scroll_event",
12827
9157f095aa9d [gaim-migrate @ 15175]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12816
diff changeset
1882 G_CALLBACK(imhtml_scroll_event_cb), status_box->imhtml);
15145
29ce100d3f5b [gaim-migrate @ 17869]
Sean Egan <seanegan@pidgin.im>
parents: 15141
diff changeset
1883 g_signal_connect(G_OBJECT(status_box->popup_window), "button_release_event", G_CALLBACK(treeview_button_release_cb), status_box);
15177
8b6c66e09388 [gaim-migrate @ 17901]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15176
diff changeset
1884 g_signal_connect(G_OBJECT(status_box->popup_window), "key_press_event", G_CALLBACK(treeview_key_press_event), status_box);
23405
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1885 g_signal_connect(G_OBJECT(status_box->tree_view), "cursor-changed",
c07358e00ffc Arrow keys in status menu should skip separator lines. Closes #1360.
Elliott Sales de Andrade <qulogic@pidgin.im>
parents: 23032
diff changeset
1886 G_CALLBACK(treeview_cursor_changed_cb), status_box->dropdown_store);
12075
6e9784c94721 [gaim-migrate @ 14372]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12074
diff changeset
1887
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1888 gtk_tree_view_set_row_separator_func(GTK_TREE_VIEW(status_box->tree_view), dropdown_store_row_separator_func, NULL, NULL);
11850
794e48f305ab [gaim-migrate @ 14141]
Richard Stellingwerff <remenic@gmail.com>
parents: 11836
diff changeset
1889
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1890 status_box->token_status_account = check_active_accounts_for_identical_statuses();
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
1891
12595
8108c22aa723 [gaim-migrate @ 14925]
Richard Laager <rlaager@pidgin.im>
parents: 12585
diff changeset
1892 cache_pixbufs(status_box);
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
1893 pidgin_status_box_regenerate(status_box, TRUE);
11954
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11951
diff changeset
1894
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1895 purple_signal_connect(purple_savedstatuses_get_handle(), "savedstatus-changed",
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1896 status_box,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1897 PURPLE_CALLBACK(current_savedstatus_changed_cb),
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
1898 status_box);
18183
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1899 purple_signal_connect(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1900 "savedstatus-added", status_box,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1901 PURPLE_CALLBACK(saved_status_updated_cb), status_box);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1902 purple_signal_connect(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1903 "savedstatus-deleted", status_box,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1904 PURPLE_CALLBACK(saved_status_updated_cb), status_box);
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1905 purple_signal_connect(purple_savedstatuses_get_handle(),
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1906 "savedstatus-modified", status_box,
31e06ec80111 fixes #590 by allowing one to use the delete key to delete transient status,
Ka-Hing Cheung <khc@pidgin.im>
parents: 18121
diff changeset
1907 PURPLE_CALLBACK(saved_status_updated_cb), status_box);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1908 purple_signal_connect(purple_accounts_get_handle(), "account-enabled", status_box,
17082
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1909 PURPLE_CALLBACK(account_enabled_cb),
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1910 status_box);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1911 purple_signal_connect(purple_accounts_get_handle(), "account-disabled", status_box,
17082
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1912 PURPLE_CALLBACK(account_enabled_cb),
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1913 status_box);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
1914 purple_signal_connect(purple_accounts_get_handle(), "account-status-changed", status_box,
17082
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1915 PURPLE_CALLBACK(account_status_changed_cb),
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
1916 status_box);
14804
8c79ca123c25 [gaim-migrate @ 17499]
Daniel Atallah <datallah@pidgin.im>
parents: 14801
diff changeset
1917
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15999
diff changeset
1918 purple_prefs_connect_callback(status_box, PIDGIN_PREFS_ROOT "/conversations/spellcheck",
12651
be8208c28eaa [gaim-migrate @ 14992]
Mark Doliner <markdoliner@pidgin.im>
parents: 12634
diff changeset
1919 spellcheck_prefs_cb, status_box);
16123
8b98683319e7 Rename /purple/gtk preferences back to /gaim/gtk to allow for smooth upgrades
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 15999
diff changeset
1920 purple_prefs_connect_callback(status_box, PIDGIN_PREFS_ROOT "/accounts/buddyicon",
14698
ce03134f05df [gaim-migrate @ 17382]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14661
diff changeset
1921 update_buddyicon_cb, status_box);
15885
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1922 purple_signal_connect(purple_get_core(), "uri-handler", status_box,
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1923 PURPLE_CALLBACK(statusbox_uri_handler), status_box);
01f2c945c63c who knew that --disable-plugins still worked?! Also, some completely untested support for aim:buddyicon, which I'll look at more tomorrow
Sean Egan <seanegan@pidgin.im>
parents: 15884
diff changeset
1924
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1925 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1926
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1927 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1928 pidgin_status_box_size_request(GtkWidget *widget,
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
1929 GtkRequisition *requisition)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1930 {
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1931 GtkRequisition box_req;
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1932 gint border_width = GTK_CONTAINER (widget)->border_width;
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1933
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1934 gtk_widget_size_request(PIDGIN_STATUS_BOX(widget)->toggle_button, requisition);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1935
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1936 /* Make this icon the same size as other buddy icons in the list; unless it already wants to be bigger */
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
1937 requisition->height = MAX(requisition->height, 34);
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
1938 requisition->height += border_width * 2;
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
1939
13065
6ad1cf73ad6b [gaim-migrate @ 15427]
Mark Doliner <markdoliner@pidgin.im>
parents: 13062
diff changeset
1940 /* If the gtkimhtml is visible, then add some additional padding */
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1941 gtk_widget_size_request(PIDGIN_STATUS_BOX(widget)->vbox, &box_req);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1942 if (box_req.height > 1)
15180
7ed2edcb163b [gaim-migrate @ 17904]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15177
diff changeset
1943 requisition->height += box_req.height + border_width * 2;
12286
08d994091c36 [gaim-migrate @ 14590]
Etan Reisner <deryni@pidgin.im>
parents: 12275
diff changeset
1944
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1945 requisition->width = 1;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1946 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1947
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1948 /* From gnome-panel */
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1949 static void
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1950 do_colorshift (GdkPixbuf *dest, GdkPixbuf *src, int shift)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1951 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1952 gint i, j;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1953 gint width, height, has_alpha, srcrowstride, destrowstride;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1954 guchar *target_pixels;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1955 guchar *original_pixels;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1956 guchar *pixsrc;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1957 guchar *pixdest;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1958 int val;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1959 guchar r,g,b;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1960
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1961 has_alpha = gdk_pixbuf_get_has_alpha (src);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1962 width = gdk_pixbuf_get_width (src);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1963 height = gdk_pixbuf_get_height (src);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1964 srcrowstride = gdk_pixbuf_get_rowstride (src);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1965 destrowstride = gdk_pixbuf_get_rowstride (dest);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1966 target_pixels = gdk_pixbuf_get_pixels (dest);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1967 original_pixels = gdk_pixbuf_get_pixels (src);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1968
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1969 for (i = 0; i < height; i++) {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1970 pixdest = target_pixels + i*destrowstride;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1971 pixsrc = original_pixels + i*srcrowstride;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1972 for (j = 0; j < width; j++) {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1973 r = *(pixsrc++);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1974 g = *(pixsrc++);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1975 b = *(pixsrc++);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1976 val = r + shift;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1977 *(pixdest++) = CLAMP(val, 0, 255);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1978 val = g + shift;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1979 *(pixdest++) = CLAMP(val, 0, 255);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1980 val = b + shift;
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1981 *(pixdest++) = CLAMP(val, 0, 255);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1982 if (has_alpha)
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1983 *(pixdest++) = *(pixsrc++);
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1984 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1985 }
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1986 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1987
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1988 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1989 pidgin_status_box_size_allocate(GtkWidget *widget,
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1990 GtkAllocation *allocation)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1991 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
1992 PidginStatusBox *status_box = PIDGIN_STATUS_BOX(widget);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
1993 GtkRequisition req = {0,0};
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
1994 GtkAllocation parent_alc, box_alc, icon_alc;
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
1995 gint border_width = GTK_CONTAINER (widget)->border_width;
11400
be2052efada5 [gaim-migrate @ 13635]
Will Thompson <resiak@pidgin.im>
parents: 11347
diff changeset
1996
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1997 gtk_widget_size_request(status_box->toggle_button, &req);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1998 /* Make this icon the same size as other buddy icons in the list; unless it already wants to be bigger */
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
1999
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2000 req.height = MAX(req.height, 34);
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2001 req.height += border_width * 2;
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2002
13065
6ad1cf73ad6b [gaim-migrate @ 15427]
Mark Doliner <markdoliner@pidgin.im>
parents: 13062
diff changeset
2003 box_alc = *allocation;
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2004
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2005 box_alc.width -= (border_width * 2);
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2006 box_alc.height = MAX(1, ((allocation->height - req.height) - (border_width*2)));
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2007 box_alc.x += border_width;
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2008 box_alc.y += req.height + border_width;
15180
7ed2edcb163b [gaim-migrate @ 17904]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15177
diff changeset
2009 gtk_widget_size_allocate(status_box->vbox, &box_alc);
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2010
13065
6ad1cf73ad6b [gaim-migrate @ 15427]
Mark Doliner <markdoliner@pidgin.im>
parents: 13062
diff changeset
2011 parent_alc = *allocation;
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2012 parent_alc.height = MAX(1,req.height - (border_width *2));
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2013 parent_alc.width -= (border_width * 2);
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2014 parent_alc.x += border_width;
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2015 parent_alc.y += border_width;
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2016
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2017 if (status_box->icon_box)
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2018 {
14608
6eea6c122238 [gaim-migrate @ 17269]
Sean Egan <seanegan@pidgin.im>
parents: 14316
diff changeset
2019 parent_alc.width -= (parent_alc.height + border_width);
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2020 icon_alc = parent_alc;
16158
04028f467df0 Death to Binreloc\!
Sean Egan <seanegan@pidgin.im>
parents: 16123
diff changeset
2021 icon_alc.height = MAX(1, icon_alc.height) - 2;
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2022 icon_alc.width = icon_alc.height;
27364
67d81d0a2445 Leave the icon always on the right (regardless of language direction).
Paul Aurich <darkrain42@pidgin.im>
parents: 27361
diff changeset
2023 icon_alc.x = allocation->width - (icon_alc.width + border_width + 1);
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2024 icon_alc.y += 1;
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2025
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2026 if (status_box->icon_size != icon_alc.height)
14206
5a17eb1a2c3e [gaim-migrate @ 16786]
Mark Doliner <markdoliner@pidgin.im>
parents: 14205
diff changeset
2027 {
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2028 status_box->icon_size = icon_alc.height;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2029 pidgin_status_box_redisplay_buddy_icon(status_box);
14206
5a17eb1a2c3e [gaim-migrate @ 16786]
Mark Doliner <markdoliner@pidgin.im>
parents: 14205
diff changeset
2030 }
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2031 gtk_widget_size_allocate(status_box->icon_box, &icon_alc);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2032 }
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2033 gtk_widget_size_allocate(status_box->toggle_button, &parent_alc);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2034 widget->allocation = *allocation;
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2035 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2036
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2037 static gboolean
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2038 pidgin_status_box_expose_event(GtkWidget *widget,
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
2039 GdkEventExpose *event)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2040 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2041 PidginStatusBox *status_box = PIDGIN_STATUS_BOX(widget);
12262
91aa0bd039aa [gaim-migrate @ 14564]
Sean Egan <seanegan@pidgin.im>
parents: 12256
diff changeset
2042 gtk_container_propagate_expose(GTK_CONTAINER(widget), status_box->vbox, event);
12275
c9b030c5819c [gaim-migrate @ 14579]
Sean Egan <seanegan@pidgin.im>
parents: 12274
diff changeset
2043 gtk_container_propagate_expose(GTK_CONTAINER(widget), status_box->toggle_button, event);
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2044 if (status_box->icon_box && status_box->icon_opaque) {
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2045 gtk_paint_box(widget->style, widget->window, GTK_STATE_NORMAL, GTK_SHADOW_OUT, NULL,
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2046 status_box->icon_box, "button", status_box->icon_box->allocation.x-1, status_box->icon_box->allocation.y-1,
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2047 34, 34);
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
2048 }
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2049 return FALSE;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2050 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2051
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2052 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2053 pidgin_status_box_forall(GtkContainer *container,
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2054 gboolean include_internals,
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2055 GtkCallback callback,
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2056 gpointer callback_data)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2057 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2058 PidginStatusBox *status_box = PIDGIN_STATUS_BOX (container);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2059
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2060 if (include_internals)
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2061 {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2062 (* callback) (status_box->vbox, callback_data);
12275
c9b030c5819c [gaim-migrate @ 14579]
Sean Egan <seanegan@pidgin.im>
parents: 12274
diff changeset
2063 (* callback) (status_box->toggle_button, callback_data);
c9b030c5819c [gaim-migrate @ 14579]
Sean Egan <seanegan@pidgin.im>
parents: 12274
diff changeset
2064 (* callback) (status_box->arrow, callback_data);
14215
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2065 if (status_box->icon_box)
1565e928d130 [gaim-migrate @ 16798]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14214
diff changeset
2066 (* callback) (status_box->icon_box, callback_data);
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2067 }
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2068 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2069
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2070 GtkWidget *
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2071 pidgin_status_box_new()
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2072 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2073 return g_object_new(PIDGIN_TYPE_STATUS_BOX, "account", NULL,
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
2074 "iconsel", TRUE, NULL);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2075 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2076
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
2077 GtkWidget *
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2078 pidgin_status_box_new_with_account(PurpleAccount *account)
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
2079 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2080 return g_object_new(PIDGIN_TYPE_STATUS_BOX, "account", account,
14234
813897ffbdaf [gaim-migrate @ 16822]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14217
diff changeset
2081 "iconsel", TRUE, NULL);
11499
95be4b16bfaf [gaim-migrate @ 13744]
Tim Ringenbach <marv@pidgin.im>
parents: 11400
diff changeset
2082 }
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2083
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2084 /**
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2085 * Add a row to the dropdown menu.
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2086 *
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2087 * @param status_box The status box itself.
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2088 * @param type A PidginStatusBoxItemType.
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2089 * @param pixbuf The icon to associate with this row in the menu. The
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2090 * function will try to decide a pixbuf if none is given.
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2091 * @param title The title of this item. For the primitive entries,
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2092 * this is something like "Available" or "Away." For
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2093 * the saved statuses, this is something like
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2094 * "My favorite away message!" This should be
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2095 * plaintext (non-markedup) (this function escapes it).
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2096 * @param desc The secondary text for this item. This will be
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2097 * placed on the row below the title, in a dimmer
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2098 * font (generally gray). This text should be plaintext
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2099 * (non-markedup) (this function escapes it).
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2100 * @param data Data to be associated with this row in the dropdown
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2101 * menu. For primitives this is the value of the
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2102 * PurpleStatusPrimitive. For saved statuses this is the
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2103 * creation timestamp.
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2104 */
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2105 void
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2106 pidgin_status_box_add(PidginStatusBox *status_box, PidginStatusBoxItemType type, GdkPixbuf *pixbuf,
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2107 const char *title, const char *desc, gpointer data)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2108 {
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2109 GtkTreeIter iter;
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2110 char *text;
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2111 const char *stock = NULL;
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2112
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2113 if (desc == NULL)
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2114 {
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2115 text = g_markup_escape_text(title, -1);
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2116 }
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2117 else
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2118 {
13386
5e79b7d8ee83 [gaim-migrate @ 15758]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 13359
diff changeset
2119 GtkStyle *style;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2120 char aa_color[8];
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2121 gchar *escaped_title, *escaped_desc;
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2122
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2123 style = gtk_widget_get_style(GTK_WIDGET(status_box));
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2124 snprintf(aa_color, sizeof(aa_color), "#%02x%02x%02x",
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2125 style->text_aa[GTK_STATE_NORMAL].red >> 8,
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2126 style->text_aa[GTK_STATE_NORMAL].green >> 8,
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2127 style->text_aa[GTK_STATE_NORMAL].blue >> 8);
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2128
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2129 escaped_title = g_markup_escape_text(title, -1);
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2130 escaped_desc = g_markup_escape_text(desc, -1);
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2131 text = g_strdup_printf("%s - <span color=\"%s\" size=\"smaller\">%s</span>",
17082
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
2132 escaped_title,
3316a891ffa9 disapproval of revision 'aee2b2d67b643d59beb0b75b460c553c804e8220'
Daniel Atallah <datallah@pidgin.im>
parents: 17081
diff changeset
2133 aa_color, escaped_desc);
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2134 g_free(escaped_title);
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2135 g_free(escaped_desc);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2136 }
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2137
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2138 if (!pixbuf) {
26845
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2139 PurpleStatusPrimitive prim = PURPLE_STATUS_UNSET;
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2140 if (type == PIDGIN_STATUS_BOX_TYPE_PRIMITIVE) {
26845
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2141 prim = GPOINTER_TO_INT(data);
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2142 } else if (type == PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR ||
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2143 type == PIDGIN_STATUS_BOX_TYPE_POPULAR) {
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2144 PurpleSavedStatus *saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data));
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2145 if (saved) {
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2146 prim = purple_savedstatus_get_type(saved);
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2147 }
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2148 }
26845
ecb95636d308 Use stock id everywhere!
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26844
diff changeset
2149
26847
bcf32ab6ec75 Reduce code duplication.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26846
diff changeset
2150 stock = pidgin_stock_id_from_status_primitive(prim);
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2151 }
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2152
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2153 gtk_list_store_append(status_box->dropdown_store, &iter);
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2154 gtk_list_store_set(status_box->dropdown_store, &iter,
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2155 TYPE_COLUMN, type,
26844
fd2c3d3f1209 Use stock id where possible.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26828
diff changeset
2156 ICON_STOCK_COLUMN, stock,
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2157 TEXT_COLUMN, text,
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2158 TITLE_COLUMN, title,
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2159 DESC_COLUMN, desc,
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2160 DATA_COLUMN, data,
16376
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
2161 EMBLEM_VISIBLE_COLUMN, type == PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR,
04b7b529b7b0 Saved icon for saved statuses in statusbox
Sean Egan <seanegan@pidgin.im>
parents: 16351
diff changeset
2162 EMBLEM_COLUMN, GTK_STOCK_SAVE,
13050
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2163 -1);
d65dcd88c5bb [gaim-migrate @ 15411]
Mark Doliner <markdoliner@pidgin.im>
parents: 13045
diff changeset
2164 g_free(text);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2165 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2166
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2167 void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2168 pidgin_status_box_add_separator(PidginStatusBox *status_box)
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2169 {
11756
c1b8045e540a [gaim-migrate @ 14047]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11755
diff changeset
2170 /* Don't do anything unless GTK actually supports
c1b8045e540a [gaim-migrate @ 14047]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11755
diff changeset
2171 * gtk_combo_box_set_row_separator_func */
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2172 GtkTreeIter iter;
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2173
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2174 gtk_list_store_append(status_box->dropdown_store, &iter);
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2175 gtk_list_store_set(status_box->dropdown_store, &iter,
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2176 TYPE_COLUMN, PIDGIN_STATUS_BOX_TYPE_SEPARATOR,
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2177 -1);
11738
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2178 }
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2179
207d5519a4d0 [gaim-migrate @ 14029]
Mark Doliner <markdoliner@pidgin.im>
parents: 11732
diff changeset
2180 void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2181 pidgin_status_box_set_network_available(PidginStatusBox *status_box, gboolean available)
14767
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2182 {
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2183 if (!status_box)
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2184 return;
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2185 status_box->network_available = available;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2186 pidgin_status_box_refresh(status_box);
14767
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2187 }
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2188
34cc644b452f [gaim-migrate @ 17458]
Nathan Walp <nwalp@pidgin.im>
parents: 14738
diff changeset
2189 void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2190 pidgin_status_box_set_connecting(PidginStatusBox *status_box, gboolean connecting)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2191 {
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2192 if (!status_box)
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2193 return;
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2194 status_box->connecting = connecting;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2195 pidgin_status_box_refresh(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2196 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2197
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2198 static void
16624
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2199 pixbuf_size_prepared_cb(GdkPixbufLoader *loader, int width, int height, gpointer data)
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2200 {
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2201 int w, h;
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2202 GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MEDIUM);
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2203 gtk_icon_size_lookup(icon_size, &w, &h);
17491
f5b75e7f425e Maintain aspect ratio on global icon selector. Fixes #454
Sean Egan <seanegan@pidgin.im>
parents: 17190
diff changeset
2204 if (height > width)
f5b75e7f425e Maintain aspect ratio on global icon selector. Fixes #454
Sean Egan <seanegan@pidgin.im>
parents: 17190
diff changeset
2205 w = width * h / height;
f5b75e7f425e Maintain aspect ratio on global icon selector. Fixes #454
Sean Egan <seanegan@pidgin.im>
parents: 17190
diff changeset
2206 else if (width > height)
f5b75e7f425e Maintain aspect ratio on global icon selector. Fixes #454
Sean Egan <seanegan@pidgin.im>
parents: 17190
diff changeset
2207 h = height * w / width;
16624
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2208 gdk_pixbuf_loader_set_size(loader, w, h);
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2209 }
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2210
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2211 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2212 pidgin_status_box_redisplay_buddy_icon(PidginStatusBox *status_box)
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2213 {
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2214
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2215 /* This is sometimes called before the box is shown, and we will not have a size */
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2216 if (status_box->icon_size <= 0)
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2217 return;
14238
4c10e0ea7c84 [gaim-migrate @ 16826]
Daniel Atallah <datallah@pidgin.im>
parents: 14234
diff changeset
2218
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2219 if (status_box->buddy_icon)
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2220 g_object_unref(status_box->buddy_icon);
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2221 if (status_box->buddy_icon_hover)
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2222 g_object_unref(status_box->buddy_icon_hover);
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2223 status_box->buddy_icon = NULL;
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2224 status_box->buddy_icon_hover = NULL;
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2225
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
2226 if (status_box->buddy_icon_img != NULL)
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
2227 {
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2228 GdkPixbufLoader *loader;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2229 GError *error = NULL;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2230
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2231 loader = gdk_pixbuf_loader_new();
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2232
16624
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2233 g_signal_connect(G_OBJECT(loader), "size-prepared", G_CALLBACK(pixbuf_size_prepared_cb), NULL);
31889
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2234 if (!gdk_pixbuf_loader_write(loader,
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2235 purple_imgstore_get_data(status_box->buddy_icon_img),
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2236 purple_imgstore_get_size(status_box->buddy_icon_img),
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2237 &error) || error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2238 {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2239 purple_debug_warning("gtkstatusbox", "gdk_pixbuf_loader_write() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2240 "failed with size=%zu: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2241 purple_imgstore_get_size(status_box->buddy_icon_img),
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2242 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2243 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2244 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2245 } else if (!gdk_pixbuf_loader_close(loader, &error) || error) {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2246 purple_debug_warning("gtkstatusbox", "gdk_pixbuf_loader_close() "
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2247 "failed for image of size %zu: %s\n",
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2248 purple_imgstore_get_size(status_box->buddy_icon_img),
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2249 error ? error->message : "(no error message)");
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2250 if (error)
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2251 g_error_free(error);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2252 } else {
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2253 GdkPixbuf *buf, *scale;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2254 int scale_width, scale_height;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2255
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2256 buf = gdk_pixbuf_loader_get_pixbuf(loader);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2257 scale_width = gdk_pixbuf_get_width(buf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2258 scale_height = gdk_pixbuf_get_height(buf);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2259 scale = gdk_pixbuf_new(GDK_COLORSPACE_RGB, TRUE, 8, scale_width, scale_height);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2260 gdk_pixbuf_fill(scale, 0x00000000);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2261 gdk_pixbuf_copy_area(buf, 0, 0, scale_width, scale_height, scale, 0, 0);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2262 if (pidgin_gdk_pixbuf_is_opaque(scale))
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2263 pidgin_gdk_pixbuf_make_round(scale);
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2264 status_box->buddy_icon = scale;
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2265 }
96183796df0c Start looking at the GError parameter every time we call these functions:
Mark Doliner <markdoliner@pidgin.im>
parents: 31396
diff changeset
2266
20289
5c844288fbec applied changes from 32f31e981f0618a4167aa98bcc22c2dab13d1550
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 20214
diff changeset
2267 g_object_unref(loader);
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
2268 }
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2269
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2270 if (status_box->buddy_icon == NULL)
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2271 {
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2272 /* Show a placeholder icon */
16386
416b510e691e New select-avatar image from hbons
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16376
diff changeset
2273 GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL);
16351
1ac1dbbeb665 References #219
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16314
diff changeset
2274 status_box->buddy_icon = gtk_widget_render_icon(GTK_WIDGET(status_box),
16386
416b510e691e New select-avatar image from hbons
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16376
diff changeset
2275 PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR,
16351
1ac1dbbeb665 References #219
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16314
diff changeset
2276 icon_size, "PidginStatusBox");
14205
07dd7adc4a55 [gaim-migrate @ 16785]
Mark Doliner <markdoliner@pidgin.im>
parents: 14203
diff changeset
2277 }
14203
f3a50c328ddc [gaim-migrate @ 16783]
Mark Doliner <markdoliner@pidgin.im>
parents: 14196
diff changeset
2278
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2279 if (status_box->buddy_icon != NULL) {
16624
7ee896a1c1f7 This is Sadrul's status-rescale.patch from ticket #314. Luke said it
Richard Laager <rlaager@pidgin.im>
parents: 16545
diff changeset
2280 status_box->icon_opaque = pidgin_gdk_pixbuf_is_opaque(status_box->buddy_icon);
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2281 gtk_image_set_from_pixbuf(GTK_IMAGE(status_box->icon), status_box->buddy_icon);
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2282 status_box->buddy_icon_hover = gdk_pixbuf_copy(status_box->buddy_icon);
15458
39c79dc7c965 A lot of status icon changes:
Sean Egan <seanegan@pidgin.im>
parents: 15435
diff changeset
2283 do_colorshift(status_box->buddy_icon_hover, status_box->buddy_icon_hover, 32);
15474
673a21839b11 More statusbox tweaks:
Sean Egan <seanegan@pidgin.im>
parents: 15462
diff changeset
2284 gtk_widget_queue_resize(GTK_WIDGET(status_box));
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2285 }
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2286 }
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2287
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2288 void
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
2289 pidgin_status_box_set_buddy_icon(PidginStatusBox *status_box, PurpleStoredImage *img)
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2290 {
16538
c7e61e2917c9 Updates for the account buddy icon stuff. This doesn't yet work fully (and maybe not even partly), but it compiles.
Richard Laager <rlaager@pidgin.im>
parents: 16446
diff changeset
2291 purple_imgstore_unref(status_box->buddy_icon_img);
16711
5ed4ee33d0f8 Only attempt to ref the statusbox icon image if it's actually set
Mark Doliner <markdoliner@pidgin.im>
parents: 16688
diff changeset
2292 status_box->buddy_icon_img = img;
5ed4ee33d0f8 Only attempt to ref the statusbox icon image if it's actually set
Mark Doliner <markdoliner@pidgin.im>
parents: 16688
diff changeset
2293 if (status_box->buddy_icon_img != NULL)
5ed4ee33d0f8 Only attempt to ref the statusbox icon image if it's actually set
Mark Doliner <markdoliner@pidgin.im>
parents: 16688
diff changeset
2294 purple_imgstore_ref(status_box->buddy_icon_img);
14661
d5bcf645d158 [gaim-migrate @ 17326]
Mark Doliner <markdoliner@pidgin.im>
parents: 14623
diff changeset
2295
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2296 pidgin_status_box_redisplay_buddy_icon(status_box);
14195
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2297 }
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2298
0f7cb3b272b2 [gaim-migrate @ 16775]
Sean Egan <seanegan@pidgin.im>
parents: 14190
diff changeset
2299 void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2300 pidgin_status_box_pulse_connecting(PidginStatusBox *status_box)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2301 {
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2302 if (!status_box)
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2303 return;
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
2304 if (!connecting_stock_ids[++status_box->connecting_index])
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2305 status_box->connecting_index = 0;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2306 pidgin_status_box_refresh(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2307 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2308
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
2309 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2310 pidgin_status_box_pulse_typing(PidginStatusBox *status_box)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2311 {
26885
01b6646e42e4 Use stock-ids for connecting/typing animations in the statusbox.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 26882
diff changeset
2312 if (!typing_stock_ids[++status_box->typing_index])
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2313 status_box->typing_index = 0;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2314 pidgin_status_box_refresh(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2315 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2316
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2317 static void
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2318 activate_currently_selected_status(PidginStatusBox *status_box)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2319 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2320 PidginStatusBoxItemType type;
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2321 gpointer data;
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2322 gchar *title;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2323 GtkTreeIter iter;
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2324 GtkTreePath *path;
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2325 char *message;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2326 PurpleSavedStatus *saved_status = NULL;
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2327 gboolean changed = TRUE;
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
2328
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2329 path = gtk_tree_row_reference_get_path(status_box->active_row);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2330 if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path))
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
2331 return;
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2332 gtk_tree_path_free(path);
12659
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2333
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2334 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2335 TYPE_COLUMN, &type,
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2336 DATA_COLUMN, &data,
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2337 -1);
12074
c377fb120662 [gaim-migrate @ 14370]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12060
diff changeset
2338
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2339 /*
13025
824f4aef4e33 [gaim-migrate @ 15378]
Mark Doliner <markdoliner@pidgin.im>
parents: 13023
diff changeset
2340 * If the currently selected status is "New..." or
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2341 * "Saved..." or a popular status then do nothing.
13125
c5dab3b004ab [gaim-migrate @ 15486]
Mark Doliner <markdoliner@pidgin.im>
parents: 13124
diff changeset
2342 * Popular statuses are
11954
7da15f32e1ca [gaim-migrate @ 14245]
Mark Doliner <markdoliner@pidgin.im>
parents: 11951
diff changeset
2343 * activated elsewhere, and we update the status_box
14190
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
2344 * accordingly by connecting to the savedstatus-changed
4d3fc3f58cc6 [gaim-migrate @ 16766]
Mark Doliner <markdoliner@pidgin.im>
parents: 14097
diff changeset
2345 * signal and then calling status_menu_refresh_iter()
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2346 */
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2347 if (type != PIDGIN_STATUS_BOX_TYPE_PRIMITIVE)
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2348 return;
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2349
12659
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2350 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2351 TITLE_COLUMN, &title, -1);
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2352
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2353 message = pidgin_status_box_get_message(status_box);
12659
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2354 if (!message || !*message)
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2355 {
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2356 gtk_widget_hide_all(status_box->vbox);
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2357 status_box->imhtml_visible = FALSE;
13231
ba9a88165205 [gaim-migrate @ 15595]
Mark Doliner <markdoliner@pidgin.im>
parents: 13176
diff changeset
2358 if (message != NULL)
ba9a88165205 [gaim-migrate @ 15595]
Mark Doliner <markdoliner@pidgin.im>
parents: 13176
diff changeset
2359 {
ba9a88165205 [gaim-migrate @ 15595]
Mark Doliner <markdoliner@pidgin.im>
parents: 13176
diff changeset
2360 g_free(message);
ba9a88165205 [gaim-migrate @ 15595]
Mark Doliner <markdoliner@pidgin.im>
parents: 13176
diff changeset
2361 message = NULL;
ba9a88165205 [gaim-migrate @ 15595]
Mark Doliner <markdoliner@pidgin.im>
parents: 13176
diff changeset
2362 }
12659
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2363 }
de9c41f39996 [gaim-migrate @ 15002]
Kris Marsh <moogman@gmail.com>
parents: 12651
diff changeset
2364
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2365 if (status_box->account == NULL) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2366 PurpleStatusType *acct_status_type = NULL;
28746
47618d069f02 mostly comment changes, changed a str && !strcmp to purple_strequal
Ka-Hing Cheung <khc@pidgin.im>
parents: 28745
diff changeset
2367 const char *id = NULL; /* id of acct_status_type */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2368 PurpleStatusPrimitive primitive = GPOINTER_TO_INT(data);
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2369 /* Global */
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2370 /* Save the newly selected status to prefs.xml and status.xml */
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2371
13112
d2c4ff0321e1 [gaim-migrate @ 15473]
Mark Doliner <markdoliner@pidgin.im>
parents: 13099
diff changeset
2372 /* Has the status really been changed? */
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2373 if (status_box->token_status_account) {
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2374 gint active;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2375 PurpleStatus *status;
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2376 GtkTreePath *path = gtk_tree_row_reference_get_path(status_box->active_row);
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2377 active = gtk_tree_path_get_indices(path)[0];
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
2378
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2379 gtk_tree_path_free(path);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2380
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2381 status = purple_account_get_active_status(status_box->token_status_account);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2382
28746
47618d069f02 mostly comment changes, changed a str && !strcmp to purple_strequal
Ka-Hing Cheung <khc@pidgin.im>
parents: 28745
diff changeset
2383 acct_status_type = find_status_type_by_index(status_box->token_status_account, active);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2384 id = purple_status_type_get_id(acct_status_type);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2385
28750
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2386 if (g_str_equal(id, purple_status_get_id(status)) &&
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2387 purple_strequal(message, purple_status_get_attr_string(status, "message")))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2388 {
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2389 /* Selected status and previous status is the same */
28750
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2390 PurpleSavedStatus *ss = purple_savedstatus_get_current();
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2391 /* Make sure that statusbox displays the correct thing.
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2392 * It can get messed up if the previous selection was a
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2393 * saved status that wasn't supported by this account */
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2394 if ((purple_savedstatus_get_type(ss) == primitive)
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2395 && purple_savedstatus_is_transient(ss)
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2396 && purple_savedstatus_has_substatuses(ss))
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2397 changed = FALSE;
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2398 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2399 } else {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2400 saved_status = purple_savedstatus_get_current();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2401 if (purple_savedstatus_get_type(saved_status) == primitive &&
28750
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2402 !purple_savedstatus_has_substatuses(saved_status) &&
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2403 purple_strequal(purple_savedstatus_get_message(saved_status), message))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2404 {
28750
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2405 changed = FALSE;
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2406 }
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2407 }
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2408
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2409 if (changed)
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2410 {
28746
47618d069f02 mostly comment changes, changed a str && !strcmp to purple_strequal
Ka-Hing Cheung <khc@pidgin.im>
parents: 28745
diff changeset
2411 /* Manually find the appropriate transient status */
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2412 if (status_box->token_status_account) {
18190
bcf28ef7e8ff Re-fix the DBus list handling code by killing const GList* / const GSList*
Richard Laager <rlaager@pidgin.im>
parents: 18122
diff changeset
2413 GList *iter = purple_savedstatuses_get_all();
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2414 GList *tmp, *active_accts = purple_accounts_get_all_active();
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2415
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2416 for (; iter != NULL; iter = iter->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2417 PurpleSavedStatus *ss = iter->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2418 const char *ss_msg = purple_savedstatus_get_message(ss);
28746
47618d069f02 mostly comment changes, changed a str && !strcmp to purple_strequal
Ka-Hing Cheung <khc@pidgin.im>
parents: 28745
diff changeset
2419 /* find a known transient status that is the same as the
47618d069f02 mostly comment changes, changed a str && !strcmp to purple_strequal
Ka-Hing Cheung <khc@pidgin.im>
parents: 28745
diff changeset
2420 * new selected one */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2421 if ((purple_savedstatus_get_type(ss) == primitive) && purple_savedstatus_is_transient(ss) &&
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2422 purple_savedstatus_has_substatuses(ss) && /* Must have substatuses */
28745
a46bd7e81075 there's no reason for message_changed to use g_utf8_collate, and also
Ka-Hing Cheung <khc@pidgin.im>
parents: 28744
diff changeset
2423 purple_strequal(ss_msg, message))
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2424 {
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2425 gboolean found = FALSE;
28749
601a10ad0be1 I don't think the comment made sense, this is probably what it meant
Ka-Hing Cheung <khc@pidgin.im>
parents: 28748
diff changeset
2426 /* this status must have substatuses for all the active accts */
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2427 for(tmp = active_accts; tmp != NULL; tmp = tmp->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2428 PurpleAccount *acct = tmp->data;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2429 PurpleSavedStatusSub *sub = purple_savedstatus_get_substatus(ss, acct);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2430 if (sub) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2431 const PurpleStatusType *sub_type = purple_savedstatus_substatus_get_type(sub);
16688
ef8a9e399320 Fedora bug/patch https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=234399
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 16624
diff changeset
2432 const char *subtype_status_id = purple_status_type_get_id(sub_type);
28746
47618d069f02 mostly comment changes, changed a str && !strcmp to purple_strequal
Ka-Hing Cheung <khc@pidgin.im>
parents: 28745
diff changeset
2433 if (purple_strequal(subtype_status_id, id)) {
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2434 found = TRUE;
28744
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2435 break;
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2436 }
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2437 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2438 }
28744
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2439
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2440 if (found) {
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2441 saved_status = ss;
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2442 break;
84e58ebb5833 break early if we found the right saved status, and rewrote the exit logic
Ka-Hing Cheung <khc@pidgin.im>
parents: 28087
diff changeset
2443 }
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2444 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2445 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2446
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2447 g_list_free(active_accts);
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2448
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2449 } else {
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2450 /* If we've used this type+message before, lookup the transient status */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2451 saved_status = purple_savedstatus_find_transient_by_type_and_message(primitive, message);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2452 }
13012
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12932
diff changeset
2453
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12932
diff changeset
2454 /* If this type+message is unique then create a new transient saved status */
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12932
diff changeset
2455 if (saved_status == NULL)
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12932
diff changeset
2456 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2457 saved_status = purple_savedstatus_new(NULL, primitive);
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2458 purple_savedstatus_set_message(saved_status, message);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2459 if (status_box->token_status_account) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2460 GList *tmp, *active_accts = purple_accounts_get_all_active();
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2461 for (tmp = active_accts; tmp != NULL; tmp = tmp->next) {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2462 purple_savedstatus_set_substatus(saved_status,
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2463 (PurpleAccount*) tmp->data, acct_status_type, message);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2464 }
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2465 g_list_free(active_accts);
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2466 }
13012
402bd07464a7 [gaim-migrate @ 15365]
Mark Doliner <markdoliner@pidgin.im>
parents: 12932
diff changeset
2467 }
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2468
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2469 /* Set the status for each account */
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2470 purple_savedstatus_activate(saved_status);
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2471 }
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2472 } else {
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2473 /* Per-account */
11981
50f2070cd348 [gaim-migrate @ 14274]
Tim Ringenbach <marv@pidgin.im>
parents: 11967
diff changeset
2474 gint active;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2475 PurpleStatusType *status_type;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2476 PurpleStatus *status;
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2477 const char *id = NULL;
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2478
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2479 status = purple_account_get_active_status(status_box->account);
11981
50f2070cd348 [gaim-migrate @ 14274]
Tim Ringenbach <marv@pidgin.im>
parents: 11967
diff changeset
2480
15216
2859ff89476d [gaim-migrate @ 17940]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15201
diff changeset
2481 active = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(status_box), "active"));
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2482
11993
b9dff0189886 [gaim-migrate @ 14286]
Tim Ringenbach <marv@pidgin.im>
parents: 11991
diff changeset
2483 status_type = find_status_type_by_index(status_box->account, active);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2484 id = purple_status_type_get_id(status_type);
11981
50f2070cd348 [gaim-migrate @ 14274]
Tim Ringenbach <marv@pidgin.im>
parents: 11967
diff changeset
2485
28750
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2486 if (g_str_equal(id, purple_status_get_id(status)) &&
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2487 purple_strequal(message, purple_status_get_attr_string(status, "message")))
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2488 {
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2489 /* Selected status and previous status is the same */
28750
185fe805c9d0 colapses 2 ifs together
Ka-Hing Cheung <khc@pidgin.im>
parents: 28749
diff changeset
2490 changed = FALSE;
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2491 }
12123
a5890e156848 [gaim-migrate @ 14423]
Mark Doliner <markdoliner@pidgin.im>
parents: 12103
diff changeset
2492
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2493 if (changed)
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2494 {
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2495 if (message)
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2496 purple_account_set_status(status_box->account, id,
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2497 TRUE, "message", message, NULL);
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2498 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2499 purple_account_set_status(status_box->account, id,
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2500 TRUE, NULL);
15064
da02544e8fe6 [gaim-migrate @ 17782]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14865
diff changeset
2501
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2502 saved_status = purple_savedstatus_get_current();
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2503 if (purple_savedstatus_is_transient(saved_status))
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2504 purple_savedstatus_set_substatus(saved_status, status_box->account,
15064
da02544e8fe6 [gaim-migrate @ 17782]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 14865
diff changeset
2505 status_type, message);
12076
43b9b14ead2d [gaim-migrate @ 14373]
Daniel Atallah <datallah@pidgin.im>
parents: 12075
diff changeset
2506 }
11981
50f2070cd348 [gaim-migrate @ 14274]
Tim Ringenbach <marv@pidgin.im>
parents: 11967
diff changeset
2507 }
11627
07feb58977aa [gaim-migrate @ 13902]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11593
diff changeset
2508
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11627
diff changeset
2509 g_free(title);
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2510 g_free(message);
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2511 }
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2512
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2513 static void update_size(PidginStatusBox *status_box)
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2514 {
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2515 GtkTextBuffer *buffer;
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2516 GtkTextIter iter;
25902
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2517 int display_lines;
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2518 int lines;
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2519 GdkRectangle oneline;
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2520 int height;
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2521 int pad_top, pad_inside, pad_bottom;
29217
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2522 gboolean interior_focus;
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2523 int focus_width;
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2524
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2525 if (!status_box->imhtml_visible)
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2526 {
12598
fd20149e7a7e [gaim-migrate @ 14928]
Richard Laager <rlaager@pidgin.im>
parents: 12597
diff changeset
2527 if (status_box->vbox != NULL)
fd20149e7a7e [gaim-migrate @ 14928]
Richard Laager <rlaager@pidgin.im>
parents: 12597
diff changeset
2528 gtk_widget_set_size_request(status_box->vbox, -1, -1);
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2529 return;
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2530 }
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2531
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2532 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2533
17190
674026d9a55a Fix #1100.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17082
diff changeset
2534 height = 0;
25902
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2535 display_lines = 1;
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2536 gtk_text_buffer_get_start_iter(buffer, &iter);
17190
674026d9a55a Fix #1100.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17082
diff changeset
2537 do {
674026d9a55a Fix #1100.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17082
diff changeset
2538 gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline);
674026d9a55a Fix #1100.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17082
diff changeset
2539 height += oneline.height;
25902
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2540 display_lines++;
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2541 } while (display_lines <= 4 &&
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2542 gtk_text_view_forward_display_line(GTK_TEXT_VIEW(status_box->imhtml), &iter));
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2543
25901
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2544 /*
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2545 * This check fixes the case where the last character entered is a
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2546 * newline (shift+return). For some reason the
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2547 * gtk_text_view_forward_display_line() function doesn't treat this
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2548 * like a new line, and so we think the input box only needs to be
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2549 * two lines instead of three, for example. So we check if the
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2550 * last character was a newline and add some extra height if so.
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2551 */
25902
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2552 if (display_lines <= 4
25901
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2553 && gtk_text_iter_backward_char(&iter)
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2554 && gtk_text_iter_get_char(&iter) == '\n')
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2555 {
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2556 gtk_text_view_get_iter_location(GTK_TEXT_VIEW(status_box->imhtml), &iter, &oneline);
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2557 height += oneline.height;
25903
7a2258038ceb Increment display_lines here so that, for fonts where pixels_inside_wrap()
Mark Doliner <markdoliner@pidgin.im>
parents: 25902
diff changeset
2558 display_lines++;
25901
805c4c220100 Fix a bug that's bothered me for a while. When pressing shift+enter in
Mark Doliner <markdoliner@pidgin.im>
parents: 25888
diff changeset
2559 }
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2560
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2561 lines = gtk_text_buffer_get_line_count(buffer);
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2562
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2563 /* Show a maximum of 4 lines */
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2564 lines = MIN(lines, 4);
25902
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2565 display_lines = MIN(display_lines, 4);
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2566
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2567 pad_top = gtk_text_view_get_pixels_above_lines(GTK_TEXT_VIEW(status_box->imhtml));
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2568 pad_bottom = gtk_text_view_get_pixels_below_lines(GTK_TEXT_VIEW(status_box->imhtml));
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2569 pad_inside = gtk_text_view_get_pixels_inside_wrap(GTK_TEXT_VIEW(status_box->imhtml));
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2570
17190
674026d9a55a Fix #1100.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 17082
diff changeset
2571 height += (pad_top + pad_bottom) * lines;
25902
e00c2d18aad0 Change the logic for breaking out of the while look to match the if
Mark Doliner <markdoliner@pidgin.im>
parents: 25901
diff changeset
2572 height += (pad_inside) * (display_lines - lines);
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2573
29217
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2574 gtk_widget_style_get(status_box->imhtml,
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2575 "interior-focus", &interior_focus,
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2576 "focus-line-width", &focus_width,
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2577 NULL);
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2578 if (!interior_focus)
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2579 height += 2 * focus_width;
903157b8f52b Patch from Gabriel Schulhof to correctly size the GtkIMHtml entry in the
Gabriel Schulhof <nix@go-nix.ca>
parents: 28781
diff changeset
2580
15882
1dbd5756b7bf More Gaim to Pidgin stuff
Sean Egan <seanegan@pidgin.im>
parents: 15736
diff changeset
2581 gtk_widget_set_size_request(status_box->vbox, -1, height + PIDGIN_HIG_BOX_SPACE);
12597
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2582 }
ff6ea86357fa [gaim-migrate @ 14927]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12596
diff changeset
2583
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2584 static void remove_typing_cb(PidginStatusBox *status_box)
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2585 {
12782
b6f0819de992 [gaim-migrate @ 15129]
Mark Doliner <markdoliner@pidgin.im>
parents: 12779
diff changeset
2586 if (status_box->typing == 0)
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2587 {
12782
b6f0819de992 [gaim-migrate @ 15129]
Mark Doliner <markdoliner@pidgin.im>
parents: 12779
diff changeset
2588 /* Nothing has changed, so we don't need to do anything */
28751
01d28b827401 try not to artificially hide and then unhide the imhtml when status
Ka-Hing Cheung <khc@pidgin.im>
parents: 28750
diff changeset
2589 status_menu_refresh_iter(status_box, FALSE);
12782
b6f0819de992 [gaim-migrate @ 15129]
Mark Doliner <markdoliner@pidgin.im>
parents: 12779
diff changeset
2590 return;
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2591 }
12782
b6f0819de992 [gaim-migrate @ 15129]
Mark Doliner <markdoliner@pidgin.im>
parents: 12779
diff changeset
2592
27032
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2593 gtk_imhtml_set_populate_primary_clipboard(
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2594 GTK_IMHTML(status_box->imhtml), TRUE);
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2595
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
2596 purple_timeout_remove(status_box->typing);
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2597 status_box->typing = 0;
13741
95f148a2c70a [gaim-migrate @ 16150]
Mark Doliner <markdoliner@pidgin.im>
parents: 13739
diff changeset
2598
95f148a2c70a [gaim-migrate @ 16150]
Mark Doliner <markdoliner@pidgin.im>
parents: 13739
diff changeset
2599 activate_currently_selected_status(status_box);
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2600 pidgin_status_box_refresh(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2601 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2602
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2603 static void pidgin_status_box_changed(PidginStatusBox *status_box)
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2604 {
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2605 GtkTreePath *path = gtk_tree_row_reference_get_path(status_box->active_row);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2606 GtkTreeIter iter;
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2607 PidginStatusBoxItemType type;
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2608 gpointer data;
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
2609 GList *accounts = NULL, *node;
15216
2859ff89476d [gaim-migrate @ 17940]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15201
diff changeset
2610 int active;
29298
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2611 gboolean wastyping = FALSE;
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2612
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
2613
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2614 if (!gtk_tree_model_get_iter (GTK_TREE_MODEL(status_box->dropdown_store), &iter, path))
14865
533ea832c97c [gaim-migrate @ 17568]
Sean Egan <seanegan@pidgin.im>
parents: 14864
diff changeset
2615 return;
15216
2859ff89476d [gaim-migrate @ 17940]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15201
diff changeset
2616 active = gtk_tree_path_get_indices(path)[0];
15141
6fde8ebff40a [gaim-migrate @ 17864]
Sean Egan <seanegan@pidgin.im>
parents: 15132
diff changeset
2617 gtk_tree_path_free(path);
15216
2859ff89476d [gaim-migrate @ 17940]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 15201
diff changeset
2618 g_object_set_data(G_OBJECT(status_box), "active", GINT_TO_POINTER(active));
15999
77ac8981199b Some pixmap path fixes and win32 fixes
Daniel Atallah <datallah@pidgin.im>
parents: 15941
diff changeset
2619
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2620 gtk_tree_model_get(GTK_TREE_MODEL(status_box->dropdown_store), &iter,
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2621 TYPE_COLUMN, &type,
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2622 DATA_COLUMN, &data,
11739
cc15987b3937 [gaim-migrate @ 14030]
Mark Doliner <markdoliner@pidgin.im>
parents: 11738
diff changeset
2623 -1);
29298
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2624 if ((wastyping = (status_box->typing != 0)))
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
2625 purple_timeout_remove(status_box->typing);
11638
1821b40269a3 [gaim-migrate @ 13914]
Stu Tomlinson <nosnilmot@pidgin.im>
parents: 11627
diff changeset
2626 status_box->typing = 0;
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2627
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2628 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box)))
11729
56b1a9f35b74 [gaim-migrate @ 14020]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
2629 {
16426
fabd69a48567 For Luke. Fixes saved status selection
Sean Egan <seanegan@pidgin.im>
parents: 16402
diff changeset
2630 if (type == PIDGIN_STATUS_BOX_TYPE_POPULAR || type == PIDGIN_STATUS_BOX_TYPE_SAVED_POPULAR)
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2631 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2632 PurpleSavedStatus *saved;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2633 saved = purple_savedstatus_find_by_creation_time(GPOINTER_TO_INT(data));
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2634 g_return_if_fail(saved != NULL);
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2635 purple_savedstatus_activate(saved);
12778
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2636 return;
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2637 }
e98948ef3259 [gaim-migrate @ 15125]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12731
diff changeset
2638
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2639 if (type == PIDGIN_STATUS_BOX_TYPE_CUSTOM)
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2640 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2641 PurpleSavedStatus *saved_status;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2642 saved_status = purple_savedstatus_get_current();
16179
bdf68342e1ce sf patch #1622581, from Greg Taeger
Mark Doliner <markdoliner@pidgin.im>
parents: 16158
diff changeset
2643 if (purple_savedstatus_get_type(saved_status) == PURPLE_STATUS_AVAILABLE)
bdf68342e1ce sf patch #1622581, from Greg Taeger
Mark Doliner <markdoliner@pidgin.im>
parents: 16158
diff changeset
2644 saved_status = purple_savedstatus_new(NULL, PURPLE_STATUS_AWAY);
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
2645 pidgin_status_editor_show(FALSE,
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2646 purple_savedstatus_is_transient(saved_status)
13176
df549de66219 [gaim-migrate @ 15538]
Mark Doliner <markdoliner@pidgin.im>
parents: 13125
diff changeset
2647 ? saved_status : NULL);
29298
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2648 status_menu_refresh_iter(status_box, wastyping);
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2649 if (wastyping)
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2650 pidgin_status_box_refresh(status_box);
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2651 return;
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2652 }
11729
56b1a9f35b74 [gaim-migrate @ 14020]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
2653
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2654 if (type == PIDGIN_STATUS_BOX_TYPE_SAVED)
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2655 {
15562
8c8249fe5e3c gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents: 15554
diff changeset
2656 pidgin_status_window_show();
29298
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2657 status_menu_refresh_iter(status_box, wastyping);
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2658 if (wastyping)
44ae7afa8fd0 Refresh the statusbox correctly.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 29217
diff changeset
2659 pidgin_status_box_refresh(status_box);
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2660 return;
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2661 }
11729
56b1a9f35b74 [gaim-migrate @ 14020]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
2662 }
56b1a9f35b74 [gaim-migrate @ 14020]
Mark Doliner <markdoliner@pidgin.im>
parents: 11724
diff changeset
2663
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2664 /*
12779
b0d89f38aebb [gaim-migrate @ 15126]
Mark Doliner <markdoliner@pidgin.im>
parents: 12778
diff changeset
2665 * Show the message box whenever the primitive allows for a
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
2666 * message attribute on any protocol that is enabled,
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
2667 * or our protocol, if we have account set
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2668 */
11960
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
2669 if (status_box->account)
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
2670 accounts = g_list_prepend(accounts, status_box->account);
2efa2d4369e5 [gaim-migrate @ 14251]
Tim Ringenbach <marv@pidgin.im>
parents: 11954
diff changeset
2671 else
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2672 accounts = purple_accounts_get_all_active();
11755
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2673 status_box->imhtml_visible = FALSE;
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2674 for (node = accounts; node != NULL; node = node->next)
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2675 {
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2676 PurpleAccount *account;
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2677 PurpleStatusType *status_type;
11755
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2678
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2679 account = node->data;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2680 status_type = purple_account_get_status_type_with_primitive(account, GPOINTER_TO_INT(data));
11755
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2681 if ((status_type != NULL) &&
31327
831530000b51 disapproval of revision 'c253c498a60e5a02bccb0f59d0908d1623c4307e'
John Bailey <rekkanoryo@rekkanoryo.org>
parents: 31326
diff changeset
2682 (purple_status_type_get_attr(status_type, "message") != NULL))
11755
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2683 {
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2684 status_box->imhtml_visible = TRUE;
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2685 break;
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2686 }
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2687 }
3b1b0ff3c22e [gaim-migrate @ 14046]
Mark Doliner <markdoliner@pidgin.im>
parents: 11753
diff changeset
2688 g_list_free(accounts);
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2689
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2690 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box)))
11654
3f025590a95a [gaim-migrate @ 13938]
Mark Doliner <markdoliner@pidgin.im>
parents: 11638
diff changeset
2691 {
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2692 if (status_box->imhtml_visible)
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2693 {
24434
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
2694 GtkTextIter start, end;
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
2695 GtkTextBuffer *buffer;
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2696 gtk_widget_show_all(status_box->vbox);
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
2697 status_box->typing = purple_timeout_add_seconds(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2698 gtk_widget_grab_focus(status_box->imhtml);
24434
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
2699 buffer = gtk_text_view_get_buffer(GTK_TEXT_VIEW(status_box->imhtml));
27032
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2700
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2701 gtk_imhtml_set_populate_primary_clipboard(
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2702 GTK_IMHTML(status_box->imhtml), FALSE);
991e2899be82 Avoid overwriting the PRIMARY clipboard when we select-on-focus the status text for easy editing. Fixes #8781.
Daniel Atallah <datallah@pidgin.im>
parents: 26887
diff changeset
2703
24434
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
2704 gtk_text_buffer_get_bounds(buffer, &start, &end);
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
2705 gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "insert"), &end);
618f36bdbfd0 Unbreak ABI.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 24291
diff changeset
2706 gtk_text_buffer_move_mark(buffer, gtk_text_buffer_get_mark(buffer, "selection_bound"), &start);
12274
9a6e53645f92 [gaim-migrate @ 14578]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12269
diff changeset
2707 }
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2708 else
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2709 {
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2710 gtk_widget_hide_all(status_box->vbox);
14725
39980ddc0b9a [gaim-migrate @ 17409]
Daniel Atallah <datallah@pidgin.im>
parents: 14703
diff changeset
2711 activate_currently_selected_status(status_box); /* This is where we actually set the status */
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2712 }
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2713 }
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2714 pidgin_status_box_refresh(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2715 }
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2716
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2717 static gint
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2718 get_statusbox_index(PidginStatusBox *box, PurpleSavedStatus *saved_status)
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2719 {
19455
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2720 gint index = -1;
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2721
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2722 switch (purple_savedstatus_get_type(saved_status))
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2723 {
19455
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2724 /* In reverse order */
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2725 case PURPLE_STATUS_OFFLINE:
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2726 index++;
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2727 case PURPLE_STATUS_INVISIBLE:
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2728 index++;
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2729 case PURPLE_STATUS_UNAVAILABLE:
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2730 index++;
15884
4de1981757fc sed -ie 's/gaim/purple/g'
Sean Egan <seanegan@pidgin.im>
parents: 15883
diff changeset
2731 case PURPLE_STATUS_AWAY:
19455
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2732 index++;
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2733 case PURPLE_STATUS_AVAILABLE:
e3f7e189ef7b Select the correct item in the dropdown when using a transient status.
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 18319
diff changeset
2734 index++;
12932
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2735 break;
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2736 default:
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2737 break;
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2738 }
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2739
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2740 return index;
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2741 }
63d706361608 [gaim-migrate @ 15285]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12905
diff changeset
2742
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2743 static void imhtml_changed_cb(GtkTextBuffer *buffer, void *data)
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2744 {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2745 PidginStatusBox *status_box = (PidginStatusBox*)data;
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
2746 if (GTK_WIDGET_IS_SENSITIVE(GTK_WIDGET(status_box)))
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2747 {
13124
1750c1be8e81 [gaim-migrate @ 15485]
Mark Doliner <markdoliner@pidgin.im>
parents: 13123
diff changeset
2748 if (status_box->typing != 0) {
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2749 pidgin_status_box_pulse_typing(status_box);
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
2750 purple_timeout_remove(status_box->typing);
11951
0aee90f8d803 [gaim-migrate @ 14242]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 11891
diff changeset
2751 }
26753
a8dca8faae69 A patch from Arunan Balasubramaniam to use timeouts in seconds instead of
Arunan Balasubramaniam <foss@abala.me>
parents: 25903
diff changeset
2752 status_box->typing = purple_timeout_add_seconds(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, status_box);
10861
21977f46cdf4 [gaim-migrate @ 12544]
Mark Doliner <markdoliner@pidgin.im>
parents: 10749
diff changeset
2753 }
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2754 pidgin_status_box_refresh(status_box);
10643
70f67d7c84c4 [gaim-migrate @ 12153]
Sean Egan <seanegan@pidgin.im>
parents:
diff changeset
2755 }
10649
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2756
12460
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
2757 static void imhtml_format_changed_cb(GtkIMHtml *imhtml, GtkIMHtmlButtons buttons, void *data)
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
2758 {
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
2759 imhtml_changed_cb(NULL, data);
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
2760 }
12066438d0c2 [gaim-migrate @ 14770]
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents: 12379
diff changeset
2761
15577
b8129373f65e More pidgin changes
Sean Egan <seanegan@pidgin.im>
parents: 15568
diff changeset
2762 char *pidgin_status_box_get_message(PidginStatusBox *status_box)
10649
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2763 {
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2764 if (status_box->imhtml_visible)
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2765 return gtk_imhtml_get_markup(GTK_IMHTML(status_box->imhtml));
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2766 else
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2767 return NULL;
cd536d7aff51 [gaim-migrate @ 12167]
Sean Egan <seanegan@pidgin.im>
parents: 10643
diff changeset
2768 }

mercurial