Mercurial > pidgin
comparison src/gtkblist.c @ 12583:301e9f0841d7
[gaim-migrate @ 14911]
Brutally murdered the per-account statusboxes; but didn't come up with any
replacement
committer: Tailor Script <tailor@pidgin.im>
author | Sean Egan <seanegan@gmail.com> |
---|---|
date | Tue, 20 Dec 2005 22:57:54 +0000 |
parents | 1246935dd047 |
children | 42ea8c3de6de |
comparison
equal
deleted
inserted
replaced
12582:f75c0d35e032 | 12583:301e9f0841d7 |
---|---|
3435 g_free(normalized); | 3435 g_free(normalized); |
3436 | 3436 |
3437 return result; | 3437 return result; |
3438 } | 3438 } |
3439 | 3439 |
3440 static void account_enabled(GaimAccount *account, GaimGtkBuddyList *gtkblist) | |
3441 { | |
3442 GtkWidget *box; | |
3443 | |
3444 if (!gtkblist) | |
3445 return; | |
3446 | |
3447 box = gtk_gaim_status_box_new_with_account(account); | |
3448 gtkblist->statusboxes = g_list_append(gtkblist->statusboxes, box); | |
3449 gtk_box_pack_start(GTK_BOX(gtkblist->statusboxbox), box, FALSE, TRUE, 0); | |
3450 gtk_widget_show(box); | |
3451 | |
3452 update_menu_bar(gtkblist); | |
3453 } | |
3454 | |
3455 static void account_disabled(GaimAccount *account, GaimGtkBuddyList *gtkblist) | |
3456 { | |
3457 GList *iter; | |
3458 | |
3459 if (!gtkblist) | |
3460 return; | |
3461 | |
3462 for (iter = gtkblist->statusboxes; iter; iter = iter->next) | |
3463 { | |
3464 GtkWidget *box = iter->data; | |
3465 GaimAccount *ac = NULL; | |
3466 | |
3467 g_object_get(G_OBJECT(box), "account", &ac, NULL); | |
3468 if (ac == account) | |
3469 { | |
3470 gtkblist->statusboxes = g_list_remove_link(gtkblist->statusboxes, iter); | |
3471 gtk_widget_destroy(box); | |
3472 break; | |
3473 } | |
3474 } | |
3475 | |
3476 update_menu_bar(gtkblist); | |
3477 } | |
3478 | |
3479 static void account_modified(GaimAccount *account, GaimGtkBuddyList *gtkblist) | 3440 static void account_modified(GaimAccount *account, GaimGtkBuddyList *gtkblist) |
3480 { | 3441 { |
3481 if (!gtkblist) | 3442 if (!gtkblist) |
3482 return; | 3443 return; |
3483 | 3444 |
3513 void *handle; | 3474 void *handle; |
3514 GtkCellRenderer *rend; | 3475 GtkCellRenderer *rend; |
3515 GtkTreeViewColumn *column; | 3476 GtkTreeViewColumn *column; |
3516 GtkWidget *menu; | 3477 GtkWidget *menu; |
3517 GtkWidget *sw; | 3478 GtkWidget *sw; |
3518 GtkWidget *vpane; | |
3519 GtkAccelGroup *accel_group; | 3479 GtkAccelGroup *accel_group; |
3520 GtkTreeSelection *selection; | 3480 GtkTreeSelection *selection; |
3521 GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, | 3481 GtkTargetEntry dte[] = {{"GAIM_BLIST_NODE", GTK_TARGET_SAME_APP, DRAG_ROW}, |
3522 {"application/x-im-contact", 0, DRAG_BUDDY}, | 3482 {"application/x-im-contact", 0, DRAG_BUDDY}, |
3523 {"text/x-vcard", 0, DRAG_VCARD }, | 3483 {"text/x-vcard", 0, DRAG_VCARD }, |
3569 gtk_widget_show(menu); | 3529 gtk_widget_show(menu); |
3570 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), menu, FALSE, FALSE, 0); | 3530 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), menu, FALSE, FALSE, 0); |
3571 | 3531 |
3572 accountmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts")); | 3532 accountmenu = gtk_item_factory_get_widget(gtkblist->ift, N_("/Accounts")); |
3573 | 3533 |
3574 /****************************** GtkVPaned ************************************/ | |
3575 vpane = gtk_vpaned_new(); | |
3576 gtk_widget_show(vpane); | |
3577 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), vpane, TRUE, TRUE, 0); | |
3578 gtk_paned_set_position(GTK_PANED(vpane), | |
3579 gaim_prefs_get_int("/gaim/gtk/blist/pane")); | |
3580 g_signal_connect(G_OBJECT(vpane), "notify::position", | |
3581 G_CALLBACK(pane_position_cb), NULL); | |
3582 | |
3583 /****************************** GtkTreeView **********************************/ | 3534 /****************************** GtkTreeView **********************************/ |
3584 sw = gtk_scrolled_window_new(NULL,NULL); | 3535 sw = gtk_scrolled_window_new(NULL,NULL); |
3585 gtk_widget_show(sw); | 3536 gtk_widget_show(sw); |
3586 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | 3537 gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
3587 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); | 3538 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); |
3662 | 3613 |
3663 /* Enable CTRL+F searching */ | 3614 /* Enable CTRL+F searching */ |
3664 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN); | 3615 gtk_tree_view_set_search_column(GTK_TREE_VIEW(gtkblist->treeview), NAME_COLUMN); |
3665 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(gtkblist->treeview), _search_func, NULL, NULL); | 3616 gtk_tree_view_set_search_equal_func(GTK_TREE_VIEW(gtkblist->treeview), _search_func, NULL, NULL); |
3666 | 3617 |
3667 gtk_paned_pack1(GTK_PANED(vpane), sw, TRUE, FALSE); | 3618 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), sw, TRUE, TRUE, 0); |
3668 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview); | 3619 gtk_container_add(GTK_CONTAINER(sw), gtkblist->treeview); |
3669 gaim_gtk_blist_update_columns(); | 3620 gaim_gtk_blist_update_columns(); |
3670 | 3621 |
3671 /* TODO: functionize this */ | 3622 gtkblist->statusbox = gtk_gaim_status_box_new(); |
3672 { | 3623 |
3673 GList *accounts, *l; | 3624 gtk_widget_show(gtkblist->statusbox); |
3674 GtkWidget *sw2 = gtk_scrolled_window_new(NULL, NULL); | 3625 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->statusbox, FALSE, TRUE, 0); |
3675 | 3626 |
3676 /* Set up some per account status boxes */ | |
3677 gtkblist->statusboxbox = gtk_vbox_new(FALSE, 0); | |
3678 gtkblist->statusboxes = NULL; | |
3679 | |
3680 for (l = accounts = gaim_accounts_get_all_active(); l; l = l->next) { | |
3681 GtkWidget *statusbox = gtk_gaim_status_box_new_with_account(l->data); | |
3682 gtkblist->statusboxes = g_list_append(gtkblist->statusboxes, statusbox); | |
3683 gtk_box_pack_start(GTK_BOX(gtkblist->statusboxbox), statusbox, FALSE, TRUE, 0); | |
3684 gtk_widget_show(statusbox); | |
3685 } | |
3686 g_list_free(accounts); | |
3687 | |
3688 gtk_widget_show(gtkblist->statusboxbox); | |
3689 gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(sw2), gtkblist->statusboxbox); | |
3690 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw2), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); | |
3691 gtk_widget_show(sw2); | |
3692 gtk_paned_pack2(GTK_PANED(vpane), sw2, FALSE, TRUE); | |
3693 | |
3694 gtkblist->statusbox = gtk_gaim_status_box_new(); | |
3695 | |
3696 gtk_widget_show(gtkblist->statusbox); | |
3697 gtk_box_pack_start(GTK_BOX(gtkblist->vbox), gtkblist->statusbox, FALSE, TRUE, 0); | |
3698 | |
3699 } | |
3700 | 3627 |
3701 /* set the Show Offline Buddies option. must be done | 3628 /* set the Show Offline Buddies option. must be done |
3702 * after the treeview or faceprint gets mad. -Robot101 | 3629 * after the treeview or faceprint gets mad. -Robot101 |
3703 */ | 3630 */ |
3704 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))), | 3631 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtk_item_factory_get_item (gtkblist->ift, N_("/Buddies/Show Offline Buddies"))), |
3750 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/method", | 3677 gaim_prefs_connect_callback(handle, "/gaim/gtk/sound/method", |
3751 gaim_gtk_blist_sound_method_pref_cb, NULL); | 3678 gaim_gtk_blist_sound_method_pref_cb, NULL); |
3752 | 3679 |
3753 /* Setup some gaim signal handlers. */ | 3680 /* Setup some gaim signal handlers. */ |
3754 gaim_signal_connect(gaim_accounts_get_handle(), "account-enabled", | 3681 gaim_signal_connect(gaim_accounts_get_handle(), "account-enabled", |
3755 gtkblist, GAIM_CALLBACK(account_enabled), gtkblist); | 3682 gtkblist, GAIM_CALLBACK(account_modified), gtkblist); |
3756 gaim_signal_connect(gaim_accounts_get_handle(), "account-disabled", | 3683 gaim_signal_connect(gaim_accounts_get_handle(), "account-disabled", |
3757 gtkblist, GAIM_CALLBACK(account_disabled), gtkblist); | 3684 gtkblist, GAIM_CALLBACK(account_modified), gtkblist); |
3758 gaim_signal_connect(gaim_accounts_get_handle(), "account-removed", | 3685 gaim_signal_connect(gaim_accounts_get_handle(), "account-removed", |
3759 gtkblist, GAIM_CALLBACK(account_disabled), gtkblist); | 3686 gtkblist, GAIM_CALLBACK(account_modified), gtkblist); |
3760 | 3687 |
3761 gaim_signal_connect(gaim_gtk_account_get_handle(), "account-modified", | 3688 gaim_signal_connect(gaim_gtk_account_get_handle(), "account-modified", |
3762 gtkblist, GAIM_CALLBACK(account_modified), gtkblist); | 3689 gtkblist, GAIM_CALLBACK(account_modified), gtkblist); |
3763 | 3690 |
3764 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", | 3691 gaim_signal_connect(gaim_connections_get_handle(), "signed-on", |