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 /**