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