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",