pidgin/prefs/pidginprefs.c

changeset 41381
acedeb1e8804
parent 41380
e3934b4c2950
child 41382
b45e9fceeae9
equal deleted inserted replaced
41380:e3934b4c2950 41381:acedeb1e8804
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

mercurial