| 272 |
274 |
| 273 static void |
275 static void |
| 274 gnt_append_menu_action(GntTree *tree, GaimMenuAction *action, gpointer parent) |
276 gnt_append_menu_action(GntTree *tree, GaimMenuAction *action, gpointer parent) |
| 275 { |
277 { |
| 276 GList *list; |
278 GList *list; |
| |
279 if (action == NULL) |
| |
280 return; |
| 277 |
281 |
| 278 gnt_tree_add_row_after(tree, action, |
282 gnt_tree_add_row_after(tree, action, |
| 279 gnt_tree_create_row(tree, action->label), parent, NULL); |
283 gnt_tree_create_row(tree, action->label), parent, NULL); |
| 280 for (list = action->children; list; list = list->next) |
284 for (list = action->children; list; list = list->next) |
| 281 gnt_append_menu_action(tree, list->data, action); |
285 gnt_append_menu_action(tree, list->data, action); |
| 675 remove_tooltip(ggblist); |
679 remove_tooltip(ggblist); |
| 676 else if (ggblist->context) |
680 else if (ggblist->context) |
| 677 remove_context_menu(ggblist); |
681 remove_context_menu(ggblist); |
| 678 } |
682 } |
| 679 |
683 |
| |
684 static void |
| |
685 size_changed_cb(GntWidget *w, int width, int height) |
| |
686 { |
| |
687 gaim_prefs_set_int(PREF_ROOT "/size/width", width); |
| |
688 gaim_prefs_set_int(PREF_ROOT "/size/height", height); |
| |
689 } |
| |
690 |
| |
691 static void |
| |
692 save_position_cb(GntWidget *w, int x, int y) |
| |
693 { |
| |
694 gaim_prefs_set_int(PREF_ROOT "/position/x", x); |
| |
695 gaim_prefs_set_int(PREF_ROOT "/position/y", y); |
| |
696 } |
| |
697 |
| 680 void gg_blist_init() |
698 void gg_blist_init() |
| 681 { |
699 { |
| |
700 gaim_prefs_add_none(PREF_ROOT); |
| |
701 gaim_prefs_add_none(PREF_ROOT "/size"); |
| |
702 gaim_prefs_add_int(PREF_ROOT "/size/width", 20); |
| |
703 gaim_prefs_add_int(PREF_ROOT "/size/height", 20); |
| |
704 gaim_prefs_add_none(PREF_ROOT "/position"); |
| |
705 gaim_prefs_add_int(PREF_ROOT "/position/x", 0); |
| |
706 gaim_prefs_add_int(PREF_ROOT "/position/y", 0); |
| |
707 |
| 682 ggblist = g_new0(GGBlist, 1); |
708 ggblist = g_new0(GGBlist, 1); |
| 683 |
709 |
| 684 gaim_get_blist()->ui_data = ggblist; |
710 gaim_get_blist()->ui_data = ggblist; |
| 685 |
711 |
| 686 ggblist->window = gnt_box_new(FALSE, FALSE); |
712 ggblist->window = gnt_box_new(FALSE, FALSE); |
| 690 gnt_box_set_pad(GNT_BOX(ggblist->window), 0); |
716 gnt_box_set_pad(GNT_BOX(ggblist->window), 0); |
| 691 |
717 |
| 692 ggblist->tree = gnt_tree_new(); |
718 ggblist->tree = gnt_tree_new(); |
| 693 GNT_WIDGET_SET_FLAGS(ggblist->tree, GNT_WIDGET_NO_BORDER); |
719 GNT_WIDGET_SET_FLAGS(ggblist->tree, GNT_WIDGET_NO_BORDER); |
| 694 gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0, 25); |
720 gnt_tree_set_col_width(GNT_TREE(ggblist->tree), 0, 25); |
| 695 gnt_widget_set_size(ggblist->tree, 0, getmaxy(stdscr) - 4); |
721 gnt_widget_set_size(ggblist->tree, gaim_prefs_get_int(PREF_ROOT "/size/width"), |
| |
722 gaim_prefs_get_int(PREF_ROOT "/size/height")); |
| |
723 gnt_widget_set_position(ggblist->window, gaim_prefs_get_int(PREF_ROOT "/position/x"), |
| |
724 gaim_prefs_get_int(PREF_ROOT "/position/y")); |
| 696 |
725 |
| 697 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree); |
726 gnt_box_add_widget(GNT_BOX(ggblist->window), ggblist->tree); |
| 698 gnt_widget_show(ggblist->window); |
727 gnt_widget_show(ggblist->window); |
| 699 |
728 |
| 700 gaim_signal_connect(gaim_blist_get_handle(), "buddy-status-changed", gg_blist_get_handle(), |
729 gaim_signal_connect(gaim_blist_get_handle(), "buddy-status-changed", gg_blist_get_handle(), |
| 723 g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist); |
752 g_signal_connect(G_OBJECT(ggblist->tree), "activate", G_CALLBACK(selection_activate), ggblist); |
| 724 g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip), |
753 g_signal_connect_data(G_OBJECT(ggblist->tree), "gained-focus", G_CALLBACK(draw_tooltip), |
| 725 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED); |
754 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED); |
| 726 g_signal_connect_data(G_OBJECT(ggblist->tree), "lost-focus", G_CALLBACK(remove_peripherals), |
755 g_signal_connect_data(G_OBJECT(ggblist->tree), "lost-focus", G_CALLBACK(remove_peripherals), |
| 727 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED); |
756 ggblist, 0, G_CONNECT_AFTER | G_CONNECT_SWAPPED); |
| |
757 g_signal_connect(G_OBJECT(ggblist->tree), "size_changed", G_CALLBACK(size_changed_cb), NULL); |
| |
758 g_signal_connect(G_OBJECT(ggblist->window), "position_set", G_CALLBACK(save_position_cb), NULL); |
| |
759 |
| 728 } |
760 } |
| 729 |
761 |
| 730 void gg_blist_uninit() |
762 void gg_blist_uninit() |
| 731 { |
763 { |
| 732 gnt_widget_destroy(ggblist->window); |
764 gnt_widget_destroy(ggblist->window); |