| 571 { |
571 { |
| 572 va_list ap; |
572 va_list ap; |
| 573 GList *menuitems = NULL; |
573 GList *menuitems = NULL; |
| 574 GtkWidget *dropdown = NULL; |
574 GtkWidget *dropdown = NULL; |
| 575 char *name; |
575 char *name; |
| 576 int int_value; |
|
| 577 const char *str_value; |
|
| 578 |
576 |
| 579 g_return_val_if_fail(type == PURPLE_PREF_BOOLEAN || type == PURPLE_PREF_INT || |
577 g_return_val_if_fail(type == PURPLE_PREF_BOOLEAN || type == PURPLE_PREF_INT || |
| 580 type == PURPLE_PREF_STRING, NULL); |
578 type == PURPLE_PREF_STRING, NULL); |
| 581 |
579 |
| 582 va_start(ap, key); |
580 va_start(ap, key); |
| 583 while ((name = va_arg(ap, char *)) != NULL) { |
581 while ((name = va_arg(ap, char *)) != NULL) { |
| 584 |
582 PurpleKeyValuePair *kvp; |
| 585 menuitems = g_list_prepend(menuitems, name); |
|
| 586 |
583 |
| 587 if (type == PURPLE_PREF_INT || type == PURPLE_PREF_BOOLEAN) { |
584 if (type == PURPLE_PREF_INT || type == PURPLE_PREF_BOOLEAN) { |
| 588 int_value = va_arg(ap, int); |
585 kvp = purple_key_value_pair_new(name, GINT_TO_POINTER(va_arg(ap, int))); |
| 589 menuitems = g_list_prepend(menuitems, GINT_TO_POINTER(int_value)); |
586 } else { |
| |
587 kvp = purple_key_value_pair_new(name, va_arg(ap, char *)); |
| 590 } |
588 } |
| 591 else { |
589 menuitems = g_list_prepend(menuitems, kvp); |
| 592 str_value = va_arg(ap, const char *); |
|
| 593 menuitems = g_list_prepend(menuitems, (char *)str_value); |
|
| 594 } |
|
| 595 } |
590 } |
| 596 va_end(ap); |
591 va_end(ap); |
| 597 |
592 |
| 598 g_return_val_if_fail(menuitems != NULL, NULL); |
593 g_return_val_if_fail(menuitems != NULL, NULL); |
| 599 |
594 |
| 600 menuitems = g_list_reverse(menuitems); |
595 menuitems = g_list_reverse(menuitems); |
| 601 |
596 |
| 602 dropdown = pidgin_prefs_dropdown_from_list(box, title, type, key, |
597 dropdown = pidgin_prefs_dropdown_from_list(box, title, type, key, |
| 603 menuitems); |
598 menuitems); |
| 604 |
599 |
| 605 g_list_free(menuitems); |
600 g_list_free_full(menuitems, (GDestroyNotify)purple_key_value_pair_free); |
| 606 |
601 |
| 607 return dropdown; |
602 return dropdown; |
| 608 } |
603 } |
| 609 |
604 |
| 610 static void |
605 static void |