| 408 |
408 |
| 409 return dropdown; |
409 return dropdown; |
| 410 } |
410 } |
| 411 |
411 |
| 412 static void |
412 static void |
| 413 pidgin_prefs_bind_dropdown_from_list_cb(GtkComboBox *combo_box, |
413 bind_dropdown_set(GtkComboBox *combo_box, gpointer data) |
| 414 PidginPrefCombo *combo) |
414 { |
| 415 { |
415 PidginPrefCombo *combo = data; |
| |
416 GtkTreeIter iter; |
| |
417 GtkTreeModel *tree_model; |
| |
418 |
| |
419 tree_model = gtk_combo_box_get_model(combo_box); |
| |
420 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) |
| |
421 return; |
| |
422 |
| |
423 combo->previously_active = combo->current_active; |
| |
424 combo->current_active = gtk_combo_box_get_active(combo_box); |
| |
425 |
| 416 if (combo->type == PURPLE_PREF_INT) { |
426 if (combo->type == PURPLE_PREF_INT) { |
| |
427 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
| |
428 &combo->value.integer, -1); |
| 417 purple_prefs_set_int(combo->key, combo->value.integer); |
429 purple_prefs_set_int(combo->key, combo->value.integer); |
| 418 } else if (combo->type == PURPLE_PREF_STRING) { |
430 } else if (combo->type == PURPLE_PREF_STRING) { |
| |
431 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
| |
432 &combo->value.string, -1); |
| 419 purple_prefs_set_string(combo->key, combo->value.string); |
433 purple_prefs_set_string(combo->key, combo->value.string); |
| 420 } else if (combo->type == PURPLE_PREF_BOOLEAN) { |
434 } else if (combo->type == PURPLE_PREF_BOOLEAN) { |
| |
435 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
| |
436 &combo->value.boolean, -1); |
| 421 purple_prefs_set_bool(combo->key, combo->value.boolean); |
437 purple_prefs_set_bool(combo->key, combo->value.boolean); |
| 422 } else { |
438 } else { |
| 423 g_return_if_reached(); |
439 g_return_if_reached(); |
| 424 } |
440 } |
| 425 } |
|
| 426 |
|
| 427 static void |
|
| 428 bind_dropdown_set(GtkComboBox *combo_box, gpointer data) |
|
| 429 { |
|
| 430 PidginPrefCombo *combo = data; |
|
| 431 GtkTreeIter iter; |
|
| 432 GtkTreeModel *tree_model; |
|
| 433 |
|
| 434 tree_model = gtk_combo_box_get_model(combo_box); |
|
| 435 if (!gtk_combo_box_get_active_iter(combo_box, &iter)) |
|
| 436 return; |
|
| 437 |
|
| 438 combo->previously_active = combo->current_active; |
|
| 439 combo->current_active = gtk_combo_box_get_active(combo_box); |
|
| 440 |
|
| 441 if (combo->type == PURPLE_PREF_INT) { |
|
| 442 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
|
| 443 &combo->value.integer, -1); |
|
| 444 } |
|
| 445 else if (combo->type == PURPLE_PREF_STRING) { |
|
| 446 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
|
| 447 &combo->value.string, -1); |
|
| 448 } |
|
| 449 else if (combo->type == PURPLE_PREF_BOOLEAN) { |
|
| 450 gtk_tree_model_get(tree_model, &iter, PREF_DROPDOWN_VALUE, |
|
| 451 &combo->value.boolean, -1); |
|
| 452 } |
|
| 453 |
|
| 454 combo->cb(combo_box, combo); |
|
| 455 } |
441 } |
| 456 |
442 |
| 457 void |
443 void |
| 458 pidgin_prefs_bind_dropdown_from_list(PidginPrefCombo *combo, GList *menuitems) |
444 pidgin_prefs_bind_dropdown_from_list(PidginPrefCombo *combo, GList *menuitems) |
| 459 { |
445 { |
| 525 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); |
511 gtk_combo_box_set_active_iter(GTK_COMBO_BOX(combo->combo), &active); |
| 526 combo->current_active = gtk_combo_box_get_active( |
512 combo->current_active = gtk_combo_box_get_active( |
| 527 GTK_COMBO_BOX(combo->combo)); |
513 GTK_COMBO_BOX(combo->combo)); |
| 528 combo->previously_active = combo->current_active; |
514 combo->previously_active = combo->current_active; |
| 529 |
515 |
| 530 combo->cb = pidgin_prefs_bind_dropdown_from_list_cb; |
|
| 531 g_signal_connect(G_OBJECT(combo->combo), "changed", |
516 g_signal_connect(G_OBJECT(combo->combo), "changed", |
| 532 G_CALLBACK(bind_dropdown_set), combo); |
517 G_CALLBACK(bind_dropdown_set), combo); |
| 533 } |
518 } |
| 534 |
519 |
| 535 void |
520 void |
| 593 |
578 |
| 594 combo->current_active = gtk_combo_box_get_active( |
579 combo->current_active = gtk_combo_box_get_active( |
| 595 GTK_COMBO_BOX(combo->combo)); |
580 GTK_COMBO_BOX(combo->combo)); |
| 596 combo->previously_active = combo->current_active; |
581 combo->previously_active = combo->current_active; |
| 597 |
582 |
| 598 combo->cb = pidgin_prefs_bind_dropdown_from_list_cb; |
|
| 599 g_signal_connect(G_OBJECT(combo->combo), "changed", |
583 g_signal_connect(G_OBJECT(combo->combo), "changed", |
| 600 G_CALLBACK(bind_dropdown_set), combo); |
584 G_CALLBACK(bind_dropdown_set), combo); |
| 601 } |
585 } |
| 602 |
586 |
| 603 static void |
587 static void |