Mercurial > pidgin
comparison src/gtkstatusselector.c @ 10225:ecf3ce2e2ab1
[gaim-migrate @ 11357]
This is mostly a patch from Felipe Contreras that eliminates MSN switchboard
errors and fixes MSN buddy icon syncronization, with some tweaks by me.
Thank Felipe if it works, blame me if something broke.
I also fixed a couple of text markup escaping things, fixed a glib warning that
was bugging me, fix a rare SILC crash, and make gtkstatusselector.c compile
(but do nothing) with gtk < 2.4
committer: Tailor Script <tailor@pidgin.im>
author | Stu Tomlinson <stu@nosnilmot.com> |
---|---|
date | Sun, 21 Nov 2004 17:48:09 +0000 |
parents | 9d03dd6ccc9a |
children | e7c0a9e0c276 |
comparison
equal
deleted
inserted
replaced
10224:ef7f9e69f03e | 10225:ecf3ce2e2ab1 |
---|---|
36 { | 36 { |
37 GtkWidget *combo; | 37 GtkWidget *combo; |
38 GtkWidget *entry; | 38 GtkWidget *entry; |
39 GtkWidget *frame; | 39 GtkWidget *frame; |
40 | 40 |
41 #if GTK_CHECK_VERSION(2,4,0) | |
42 GtkListStore *model; | 41 GtkListStore *model; |
43 #endif | |
44 | 42 |
45 guint entry_timer; | 43 guint entry_timer; |
46 }; | 44 }; |
47 | 45 |
48 #if GTK_CHECK_VERSION(2,4,0) | |
49 enum | 46 enum |
50 { | 47 { |
51 COLUMN_STATUS_TYPE_ID, | 48 COLUMN_STATUS_TYPE_ID, |
52 COLUMN_ICON, | 49 COLUMN_ICON, |
53 COLUMN_NAME, | 50 COLUMN_NAME, |
54 NUM_COLUMNS | 51 NUM_COLUMNS |
55 }; | 52 }; |
56 #endif /* GTK >= 2.4.0 */ | |
57 | 53 |
58 static void gaim_gtk_status_selector_class_init(GaimGtkStatusSelectorClass *klass); | 54 static void gaim_gtk_status_selector_class_init(GaimGtkStatusSelectorClass *klass); |
59 static void gaim_gtk_status_selector_init(GaimGtkStatusSelector *selector); | 55 static void gaim_gtk_status_selector_init(GaimGtkStatusSelector *selector); |
60 static void gaim_gtk_status_selector_finalize(GObject *obj); | 56 static void gaim_gtk_status_selector_finalize(GObject *obj); |
61 static void gaim_gtk_status_selector_destroy(GtkObject *obj); | 57 static void gaim_gtk_status_selector_destroy(GtkObject *obj); |
58 #if GTK_CHECK_VERSION (2,4,0) | |
62 static void status_switched_cb(GtkWidget *combo, GaimGtkStatusSelector *selector); | 59 static void status_switched_cb(GtkWidget *combo, GaimGtkStatusSelector *selector); |
63 static gboolean key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer user_data); | 60 static gboolean key_press_cb(GtkWidget *entry, GdkEventKey *event, gpointer user_data); |
64 static void signed_on_off_cb(GaimConnection *gc, GaimGtkStatusSelector *selector); | 61 static void signed_on_off_cb(GaimConnection *gc, GaimGtkStatusSelector *selector); |
62 #endif | |
65 static void rebuild_list(GaimGtkStatusSelector *selector); | 63 static void rebuild_list(GaimGtkStatusSelector *selector); |
66 | 64 |
67 static GtkVBox *parent_class = NULL; | 65 static GtkVBox *parent_class = NULL; |
68 | 66 |
69 GType | 67 GType |
110 } | 108 } |
111 | 109 |
112 static void | 110 static void |
113 gaim_gtk_status_selector_init(GaimGtkStatusSelector *selector) | 111 gaim_gtk_status_selector_init(GaimGtkStatusSelector *selector) |
114 { | 112 { |
113 #if GTK_CHECK_VERSION(2,4,0) | |
115 GtkWidget *combo; | 114 GtkWidget *combo; |
116 GtkWidget *entry; | 115 GtkWidget *entry; |
117 GtkWidget *toolbar; | 116 GtkWidget *toolbar; |
118 GtkWidget *frame; | 117 GtkWidget *frame; |
119 #if GTK_CHECK_VERSION(2,4,0) | |
120 GtkCellRenderer *renderer; | 118 GtkCellRenderer *renderer; |
121 #endif | 119 #endif |
122 | 120 |
123 selector->priv = g_new0(GaimGtkStatusSelectorPrivate, 1); | 121 selector->priv = g_new0(GaimGtkStatusSelectorPrivate, 1); |
124 | 122 |
143 "text", COLUMN_NAME, | 141 "text", COLUMN_NAME, |
144 NULL); | 142 NULL); |
145 | 143 |
146 g_signal_connect(G_OBJECT(combo), "changed", | 144 g_signal_connect(G_OBJECT(combo), "changed", |
147 G_CALLBACK(status_switched_cb), selector); | 145 G_CALLBACK(status_switched_cb), selector); |
148 #else /* GTK < 2.4.0 */ | |
149 | 146 |
150 /* TODO */ | 147 /* TODO */ |
151 | 148 |
152 #endif /* GTK < 2.4.0 */ | |
153 | 149 |
154 gtk_widget_show(combo); | 150 gtk_widget_show(combo); |
155 gtk_box_pack_start(GTK_BOX(selector), combo, FALSE, FALSE, 0); | 151 gtk_box_pack_start(GTK_BOX(selector), combo, FALSE, FALSE, 0); |
156 | 152 |
157 frame = gaim_gtk_create_imhtml(TRUE, &entry, &toolbar); | 153 frame = gaim_gtk_create_imhtml(TRUE, &entry, &toolbar); |
170 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", | 166 gaim_signal_connect(gaim_connections_get_handle(), "signed-off", |
171 selector, GAIM_CALLBACK(signed_on_off_cb), | 167 selector, GAIM_CALLBACK(signed_on_off_cb), |
172 selector); | 168 selector); |
173 | 169 |
174 rebuild_list(selector); | 170 rebuild_list(selector); |
171 #endif /* GTK < 2.4.0 */ | |
175 } | 172 } |
176 | 173 |
177 static void | 174 static void |
178 gaim_gtk_status_selector_finalize(GObject *obj) | 175 gaim_gtk_status_selector_finalize(GObject *obj) |
179 { | 176 { |
204 | 201 |
205 if (GTK_OBJECT_CLASS(parent_class)->destroy) | 202 if (GTK_OBJECT_CLASS(parent_class)->destroy) |
206 GTK_OBJECT_CLASS(parent_class)->destroy(obj); | 203 GTK_OBJECT_CLASS(parent_class)->destroy(obj); |
207 } | 204 } |
208 | 205 |
206 #if GTK_CHECK_VERSION(2,4,0) | |
209 static void | 207 static void |
210 status_switched_cb(GtkWidget *combo, GaimGtkStatusSelector *selector) | 208 status_switched_cb(GtkWidget *combo, GaimGtkStatusSelector *selector) |
211 { | 209 { |
212 GtkTreeIter iter; | 210 GtkTreeIter iter; |
213 const char *status_type_id; | 211 const char *status_type_id; |
278 } | 276 } |
279 else | 277 else |
280 gtk_widget_hide(selector->priv->frame); | 278 gtk_widget_hide(selector->priv->frame); |
281 } | 279 } |
282 } | 280 } |
281 #endif | |
283 | 282 |
284 static gboolean | 283 static gboolean |
285 insert_text_timeout_cb(gpointer data) | 284 insert_text_timeout_cb(gpointer data) |
286 { | 285 { |
286 #if GTK_CHECK_VERSION(2,4,0) | |
287 GaimGtkStatusSelector *selector = (GaimGtkStatusSelector *)data; | 287 GaimGtkStatusSelector *selector = (GaimGtkStatusSelector *)data; |
288 GtkTreeIter iter; | 288 GtkTreeIter iter; |
289 const char *status_type_id; | 289 const char *status_type_id; |
290 const char *text; | 290 const char *text; |
291 | 291 |
333 "message", message, | 333 "message", message, |
334 NULL); | 334 NULL); |
335 } | 335 } |
336 } | 336 } |
337 } | 337 } |
338 #endif | |
338 | 339 |
339 return FALSE; | 340 return FALSE; |
340 } | 341 } |
341 | 342 |
342 /** | 343 /** |