Mercurial > pidgin
comparison src/gtkblist.c @ 10178:96a850ab30c8
[gaim-migrate @ 11293]
Added a status selector widget and stuck it at the bottom of the blist.
Despite conversations regarding this, nobody has done it yet, so here's a
basic one that people can build off of. It'll at the very least allow
people to figure out what needs fixing with prpls and status (and a lot of
fixes are needed!)
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sun, 14 Nov 2004 20:15:09 +0000 |
parents | 757a7c088801 |
children | ddf002ce58b6 |
comparison
equal
deleted
inserted
replaced
10177:82c1322c4b56 | 10178:96a850ab30c8 |
---|---|
47 #include "gtkpounce.h" | 47 #include "gtkpounce.h" |
48 #include "gtkprefs.h" | 48 #include "gtkprefs.h" |
49 #include "gtkprivacy.h" | 49 #include "gtkprivacy.h" |
50 #include "gtkroomlist.h" | 50 #include "gtkroomlist.h" |
51 #include "gtksound.h" | 51 #include "gtksound.h" |
52 #include "gtkstatusselector.h" | |
52 #include "gtkutils.h" | 53 #include "gtkutils.h" |
53 | 54 |
54 #include "gaim.h" | 55 #include "gaim.h" |
55 | 56 |
56 #include <gdk/gdkkeysyms.h> | 57 #include <gdk/gdkkeysyms.h> |
3088 static void gaim_gtk_blist_show(GaimBuddyList *list) | 3089 static void gaim_gtk_blist_show(GaimBuddyList *list) |
3089 { | 3090 { |
3090 void *handle; | 3091 void *handle; |
3091 GtkCellRenderer *rend; | 3092 GtkCellRenderer *rend; |
3092 GtkTreeViewColumn *column; | 3093 GtkTreeViewColumn *column; |
3094 GtkWidget *menu; | |
3093 GtkWidget *sw; | 3095 GtkWidget *sw; |
3096 GtkWidget *selector; | |
3094 GtkAccelGroup *accel_group; | 3097 GtkAccelGroup *accel_group; |
3095 GtkTreeSelection *selection; | 3098 GtkTreeSelection *selection; |
3096 GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, | 3099 GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, |
3097 {"application/x-im-contact", 0, DRAG_BUDDY}, | 3100 {"application/x-im-contact", 0, DRAG_BUDDY}, |
3098 {"text/x-vcard", 0, DRAG_VCARD }, | 3101 {"text/x-vcard", 0, DRAG_VCARD }, |
3111 gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); | 3114 gtkblist->window = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
3112 gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list"); | 3115 gtk_window_set_role(GTK_WINDOW(gtkblist->window), "buddy_list"); |
3113 gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List")); | 3116 gtk_window_set_title(GTK_WINDOW(gtkblist->window), _("Buddy List")); |
3114 | 3117 |
3115 gtkblist->vbox = gtk_vbox_new(FALSE, 0); | 3118 gtkblist->vbox = gtk_vbox_new(FALSE, 0); |
3119 gtk_widget_show(gtkblist->vbox); | |
3116 gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->vbox); | 3120 gtk_container_add(GTK_CONTAINER(gtkblist->window), gtkblist->vbox); |
3117 | 3121 |
3118 g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL); | 3122 g_signal_connect(G_OBJECT(gtkblist->window), "delete_event", G_CALLBACK(gtk_blist_delete_cb), NULL); |
3119 g_signal_connect(G_OBJECT(gtkblist->window), "configure_event", G_CALLBACK(gtk_blist_configure_cb), NULL); | 3123 g_signal_connect(G_OBJECT(gtkblist->window), "configure_event", G_CALLBACK(gtk_blist_configure_cb), NULL); |
3120 g_signal_connect(G_OBJECT(gtkblist->window), "visibility_notify_event", G_CALLBACK(gtk_blist_visibility_cb), NULL); | 3124 g_signal_connect(G_OBJECT(gtkblist->window), "visibility_notify_event", G_CALLBACK(gtk_blist_visibility_cb), NULL); |
3131 gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu), | 3135 gtk_item_factory_create_items(gtkblist->ift, sizeof(blist_menu) / sizeof(*blist_menu), |
3132 blist_menu, NULL); | 3136 blist_menu, NULL); |
3133 gaim_gtk_load_accels(); | 3137 gaim_gtk_load_accels(); |
3134 g_signal_connect(G_OBJECT(accel_group), "accel-changed", | 3138 g_signal_connect(G_OBJECT(accel_group), "accel-changed", |
3135 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); | 3139 G_CALLBACK(gaim_gtk_save_accels_cb), NULL); |
3136 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtk_item_factory_get_widget(gtkblist->ift, "<GaimMain>"), FALSE, FALSE, 0); | 3140 menu = gtk_item_factory_get_widget(gtkblist->ift, "<GaimMain>"); |
3141 gtk_widget_show(menu); | |
3142 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), menu, FALSE, FALSE, 0); | |
3137 | 3143 |
3138 awaymenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Away")); | 3144 awaymenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Away")); |
3139 | 3145 |
3140 /* FIXME: Status */ | 3146 /* FIXME: Status */ |
3141 #if 0 | 3147 #if 0 |
3150 | 3156 |
3151 pluginmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Plugin Actions")); | 3157 pluginmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Plugin Actions")); |
3152 gaim_gtk_blist_update_plugin_actions(); | 3158 gaim_gtk_blist_update_plugin_actions(); |
3153 /****************************** GtkTreeView **********************************/ | 3159 /****************************** GtkTreeView **********************************/ |
3154 sw = gtk_scrolled_window_new(NULL,NULL); | 3160 sw = gtk_scrolled_window_new(NULL,NULL); |
3161 gtk_widget_show(sw); | |
3155 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | 3162 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
3156 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | 3163 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
3157 | 3164 |
3158 gtkblist->treemodel = gtk_tree_store_new(BLIST_COLUMNS, | 3165 gtkblist->treemodel = gtk_tree_store_new(BLIST_COLUMNS, |
3159 GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, G_TYPE_STRING, | 3166 GDK_TYPE_PIXBUF, G_TYPE_BOOLEAN, G_TYPE_STRING, |
3160 G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER); | 3167 G_TYPE_STRING, G_TYPE_STRING, GDK_TYPE_PIXBUF, G_TYPE_POINTER); |
3161 | 3168 |
3162 gtkblist->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtkblist->treemodel)); | 3169 gtkblist->treeview = gtk_tree_view_new_with_model(GTK_TREE_MODEL(gtkblist->treemodel)); |
3170 gtk_widget_show(gtkblist->treeview); | |
3163 gtk_widget_set_name(gtkblist->treeview, "gaim_gtkblist_treeview"); | 3171 gtk_widget_set_name(gtkblist->treeview, "gaim_gtkblist_treeview"); |
3164 | 3172 |
3165 /* Set up selection stuff */ | 3173 /* Set up selection stuff */ |
3166 | 3174 |
3167 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview)); | 3175 selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(gtkblist->treeview)); |
3230 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN); | 3238 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN); |
3231 | 3239 |
3232 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0); | 3240 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0); |
3233 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview); | 3241 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview); |
3234 gaim_gtk_blist_update_columns(); | 3242 gaim_gtk_blist_update_columns(); |
3243 | |
3244 selector = gaim_gtk_status_selector_new(); | |
3245 gtk_widget_show(selector); | |
3246 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), selector, FALSE, TRUE, 0); | |
3235 | 3247 |
3236 /* set the Show Offline Buddies option. must be done | 3248 /* set the Show Offline Buddies option. must be done |
3237 * after the treeview or faceprint gets mad. -Robot101 | 3249 * after the treeview or faceprint gets mad. -Robot101 |
3238 */ | 3250 */ |
3239 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))), | 3251 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))), |
3246 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE); | 3258 gtk_widget_set_sensitive(gtk_item_factory_get_widget(gtkblist->ift, N_("/Tools/Mute Sounds")), FALSE); |
3247 | 3259 |
3248 /* OK... let's show this bad boy. */ | 3260 /* OK... let's show this bad boy. */ |
3249 gaim_gtk_blist_refresh(list); | 3261 gaim_gtk_blist_refresh(list); |
3250 gaim_gtk_blist_restore_position(); | 3262 gaim_gtk_blist_restore_position(); |
3251 gtk_widget_show_all(gtkblist->window); | 3263 gtk_widget_show(gtkblist->window); |
3252 | 3264 |
3253 /* start the refresh timer */ | 3265 /* start the refresh timer */ |
3254 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") || | 3266 if (gaim_prefs_get_bool("/gaim/gtk/blist/show_idle_time") || |
3255 gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) { | 3267 gaim_prefs_get_bool("/gaim/gtk/blist/show_buddy_icons")) { |
3256 | 3268 |