pidgin/prefs/pidginprefs.c

changeset 41390
628971e4ecdf
parent 41388
4df8fa04b777
child 41394
1327e58acce3
equal deleted inserted replaced
41389:c7ca6a49977a 41390:628971e4ecdf
194 gtk_widget_show(entry); 194 gtk_widget_show(entry);
195 195
196 return pidgin_add_widget_to_vbox(GTK_BOX(page), title, sg, entry, TRUE, NULL); 196 return pidgin_add_widget_to_vbox(GTK_BOX(page), title, sg, entry, TRUE, NULL);
197 } 197 }
198 198
199 /* TODO: Maybe move this up somewheres... */
200 enum {
201 PREF_DROPDOWN_TEXT,
202 PREF_DROPDOWN_VALUE,
203 PREF_DROPDOWN_COUNT
204 };
205
206 static void 199 static void
207 dropdown_set(GtkComboBox *combo_box, G_GNUC_UNUSED gpointer data) 200 dropdown_set(GtkComboBox *combo_box, G_GNUC_UNUSED gpointer data)
208 { 201 {
209 GtkTreeIter iter; 202 GtkTreeIter iter;
210 GtkTreeModel *tree_model; 203 GtkTreeModel *tree_model;
218 211
219 type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo_box), "type")); 212 type = GPOINTER_TO_INT(g_object_get_data(G_OBJECT(combo_box), "type"));
220 key = g_object_get_data(G_OBJECT(combo_box), "key"); 213 key = g_object_get_data(G_OBJECT(combo_box), "key");
221 if (type == PURPLE_PREF_INT) { 214 if (type == PURPLE_PREF_INT) {
222 gint value; 215 gint value;
223 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); 216 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
224 purple_prefs_set_int(key, value); 217 purple_prefs_set_int(key, value);
225 } else if (type == PURPLE_PREF_STRING) { 218 } else if (type == PURPLE_PREF_STRING) {
226 gchar *value; 219 gchar *value;
227 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); 220 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
228 purple_prefs_set_string(key, value); 221 purple_prefs_set_string(key, value);
229 g_free(value); 222 g_free(value);
230 } else if (type == PURPLE_PREF_BOOLEAN) { 223 } else if (type == PURPLE_PREF_BOOLEAN) {
231 gboolean value; 224 gboolean value;
232 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); 225 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
233 purple_prefs_set_bool(key, value); 226 purple_prefs_set_bool(key, value);
234 } else { 227 } else {
235 g_return_if_reached(); 228 g_return_if_reached();
236 } 229 }
237 } 230 }
251 244
252 g_return_val_if_fail(menuitems != NULL, NULL); 245 g_return_val_if_fail(menuitems != NULL, NULL);
253 246
254 if (type == PURPLE_PREF_INT) { 247 if (type == PURPLE_PREF_INT) {
255 pref_int_value = purple_prefs_get_int(key); 248 pref_int_value = purple_prefs_get_int(key);
256 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_INT); 249 store = gtk_list_store_new(PIDGIN_PREF_COMBO_N_COLUMNS, G_TYPE_STRING,
250 G_TYPE_INT);
257 } else if (type == PURPLE_PREF_STRING) { 251 } else if (type == PURPLE_PREF_STRING) {
258 pref_str_value = purple_prefs_get_string(key); 252 pref_str_value = purple_prefs_get_string(key);
259 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_STRING); 253 store = gtk_list_store_new(PIDGIN_PREF_COMBO_N_COLUMNS, G_TYPE_STRING,
254 G_TYPE_STRING);
260 } else if (type == PURPLE_PREF_BOOLEAN) { 255 } else if (type == PURPLE_PREF_BOOLEAN) {
261 pref_bool_value = purple_prefs_get_bool(key); 256 pref_bool_value = purple_prefs_get_bool(key);
262 store = gtk_list_store_new(PREF_DROPDOWN_COUNT, G_TYPE_STRING, G_TYPE_BOOLEAN); 257 store = gtk_list_store_new(PIDGIN_PREF_COMBO_N_COLUMNS, G_TYPE_STRING,
258 G_TYPE_BOOLEAN);
263 } else { 259 } else {
264 g_return_val_if_reached(NULL); 260 g_return_val_if_reached(NULL);
265 } 261 }
266 262
267 dropdown = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store)); 263 dropdown = gtk_combo_box_new_with_model(GTK_TREE_MODEL(store));
275 break; 271 break;
276 } 272 }
277 273
278 gtk_list_store_append(store, &iter); 274 gtk_list_store_append(store, &iter);
279 gtk_list_store_set(store, &iter, 275 gtk_list_store_set(store, &iter,
280 PREF_DROPDOWN_TEXT, menu_item->key, 276 PIDGIN_PREF_COMBO_TEXT, menu_item->key,
281 -1); 277 -1);
282 278
283 if (type == PURPLE_PREF_INT) { 279 if (type == PURPLE_PREF_INT) {
284 gint value = GPOINTER_TO_INT(menu_item->value); 280 gint value = GPOINTER_TO_INT(menu_item->value);
285 gtk_list_store_set(store, &iter, PREF_DROPDOWN_VALUE, value, -1); 281 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_VALUE, value, -1);
286 if (pref_int_value == value) { 282 if (pref_int_value == value) {
287 active = iter; 283 active = iter;
288 } 284 }
289 285
290 } else if (type == PURPLE_PREF_STRING) { 286 } else if (type == PURPLE_PREF_STRING) {
291 const gchar *value = (const gchar *)menu_item->value; 287 const gchar *value = (const gchar *)menu_item->value;
292 gtk_list_store_set(store, &iter, PREF_DROPDOWN_VALUE, value, -1); 288 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_VALUE, value, -1);
293 if (purple_strequal(pref_str_value, value)) { 289 if (purple_strequal(pref_str_value, value)) {
294 active = iter; 290 active = iter;
295 } 291 }
296 292
297 } else if (type == PURPLE_PREF_BOOLEAN) { 293 } else if (type == PURPLE_PREF_BOOLEAN) {
298 gboolean value = (gboolean)GPOINTER_TO_INT(menu_item->value); 294 gboolean value = (gboolean)GPOINTER_TO_INT(menu_item->value);
299 gtk_list_store_set(store, &iter, PREF_DROPDOWN_VALUE, value, -1); 295 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_VALUE, value, -1);
300 if (pref_bool_value == value) { 296 if (pref_bool_value == value) {
301 active = iter; 297 active = iter;
302 } 298 }
303 } 299 }
304 } 300 }
368 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) 364 if (!gtk_combo_box_get_active_iter(combo_box, &iter))
369 return; 365 return;
370 366
371 if (combo->type == PURPLE_PREF_INT) { 367 if (combo->type == PURPLE_PREF_INT) {
372 gint value; 368 gint value;
373 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); 369 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
374 purple_prefs_set_int(combo->key, value); 370 purple_prefs_set_int(combo->key, value);
375 } else if (combo->type == PURPLE_PREF_STRING) { 371 } else if (combo->type == PURPLE_PREF_STRING) {
376 gchar *value; 372 gchar *value;
377 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); 373 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
378 purple_prefs_set_string(combo->key, value); 374 purple_prefs_set_string(combo->key, value);
379 g_free(value); 375 g_free(value);
380 } else if (combo->type == PURPLE_PREF_BOOLEAN) { 376 } else if (combo->type == PURPLE_PREF_BOOLEAN) {
381 gboolean value; 377 gboolean value;
382 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, &value, -1); 378 gtk_tree_model_get(tree_model, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
383 purple_prefs_set_bool(combo->key, value); 379 purple_prefs_set_bool(combo->key, value);
384 } else { 380 } else {
385 g_return_if_reached(); 381 g_return_if_reached();
386 } 382 }
387 } 383 }
413 } 409 }
414 410
415 do { 411 do {
416 if (combo->type == PURPLE_PREF_INT) { 412 if (combo->type == PURPLE_PREF_INT) {
417 gint value = 0; 413 gint value = 0;
418 gtk_tree_model_get(store, &iter, PREF_DROPDOWN_VALUE, &value, -1); 414 gtk_tree_model_get(store, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
419 if (pref_int_value == value) { 415 if (pref_int_value == value) {
420 active = iter; 416 active = iter;
421 break; 417 break;
422 } 418 }
423 419
424 } else if (combo->type == PURPLE_PREF_STRING) { 420 } else if (combo->type == PURPLE_PREF_STRING) {
425 gchar *value = NULL; 421 gchar *value = NULL;
426 gtk_tree_model_get(store, &iter, PREF_DROPDOWN_VALUE, &value, -1); 422 gtk_tree_model_get(store, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
427 if (purple_strequal(pref_str_value, value)) { 423 if (purple_strequal(pref_str_value, value)) {
428 active = iter; 424 active = iter;
429 g_free(value); 425 g_free(value);
430 break; 426 break;
431 } 427 }
432 g_free(value); 428 g_free(value);
433 429
434 } else if (combo->type == PURPLE_PREF_BOOLEAN) { 430 } else if (combo->type == PURPLE_PREF_BOOLEAN) {
435 gboolean value = FALSE; 431 gboolean value = FALSE;
436 gtk_tree_model_get(store, &iter, PREF_DROPDOWN_VALUE, &value, -1); 432 gtk_tree_model_get(store, &iter, PIDGIN_PREF_COMBO_VALUE, &value, -1);
437 if (pref_bool_value == value) { 433 if (pref_bool_value == value) {
438 active = iter; 434 active = iter;
439 break; 435 break;
440 } 436 }
441 } 437 }
514 510
515 name = purple_media_element_info_get_name(info); 511 name = purple_media_element_info_get_name(info);
516 id = purple_media_element_info_get_id(info); 512 id = purple_media_element_info_get_id(info);
517 513
518 gtk_list_store_append(store, &iter); 514 gtk_list_store_append(store, &iter);
519 gtk_list_store_set(store, &iter, PREF_DROPDOWN_TEXT, name, 515 gtk_list_store_set(store, &iter, PIDGIN_PREF_COMBO_TEXT, name,
520 PREF_DROPDOWN_VALUE, id, -1); 516 PIDGIN_PREF_COMBO_VALUE, id, -1);
521 517
522 g_object_unref(info); 518 g_object_unref(info);
523 } 519 }
524 } 520 }
525 521

mercurial