comparison src/gtkconv.c @ 7879:f9df510460d7

[gaim-migrate @ 8533] Some lot of small changes, mostly to conversation menus. -Made the alias menu item in chat convo windows work -Made the add/remove menu items in chat convo windows work. The menu item still doesn't toggle after you've added or removed, but I'll probably do that soon -Made the invite dialog not modal -Removed GAIM_STOCK_PRIVACY from stock.[c|h] since we're not using it anymore committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 14 Dec 2003 23:59:14 +0000
parents e873d0bd0e6c
children c5a4d1863425
comparison
equal deleted inserted replaced
7878:cbfbed263d00 7879:f9df510460d7
463 return; 463 return;
464 } 464 }
465 465
466 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) 466 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM)
467 gaim_conv_im_send(GAIM_CONV_IM(conv), buf); 467 gaim_conv_im_send(GAIM_CONV_IM(conv), buf);
468 else 468 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT)
469 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf); 469 gaim_conv_chat_send(GAIM_CONV_CHAT(conv), buf);
470 470
471 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send")) 471 if (gaim_prefs_get_bool("/gaim/gtk/conversations/im/hide_on_send"))
472 gaim_conv_window_hide(gaim_conversation_get_window(conv)); 472 gaim_conv_window_hide(gaim_conversation_get_window(conv));
473 473
480 static void 480 static void
481 add_cb(GtkWidget *widget, GaimConversation *conv) 481 add_cb(GtkWidget *widget, GaimConversation *conv)
482 { 482 {
483 GaimAccount *account; 483 GaimAccount *account;
484 const char *name; 484 const char *name;
485 GaimConversationType type;
486 485
487 account = gaim_conversation_get_account(conv); 486 account = gaim_conversation_get_account(conv);
488 name = gaim_conversation_get_name(conv); 487 name = gaim_conversation_get_name(conv);
489 type = gaim_conversation_get_type(conv); 488
490 489 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
491 if (GAIM_CONV_IM(conv)) {
492 GaimBuddy *b; 490 GaimBuddy *b;
493 491
494 b = gaim_find_buddy(account, name); 492 b = gaim_find_buddy(account, name);
495 if (b != NULL) 493 if (b != NULL)
496 show_confirm_del(b); 494 show_confirm_del(b);
497 else if (account != NULL && gaim_account_is_connected(account)) 495 else if (account != NULL && gaim_account_is_connected(account))
498 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); 496 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
499 } else if (GAIM_CONV_CHAT(conv)) { 497 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
500 GaimChat *c; 498 GaimChat *c;
501 499
502 c = gaim_blist_find_chat(account, name); 500 c = gaim_blist_find_chat(account, name);
503 if (c != NULL) 501 if (c != NULL)
504 show_confirm_del_blist_chat(c); 502 show_confirm_del_blist_chat(c);
514 { 512 {
515 GaimGtkConversation *gtkconv; 513 GaimGtkConversation *gtkconv;
516 514
517 gtkconv = GAIM_GTK_CONVERSATION(conv); 515 gtkconv = GAIM_GTK_CONVERSATION(conv);
518 516
519 if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { 517 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
518 serv_get_info(gaim_conversation_get_gc(conv),
519 gaim_conversation_get_name(conv));
520
521 gtk_widget_grab_focus(gtkconv->entry);
522 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
523 /* Get info of the person currently selected in the GtkTreeView */
520 GaimGtkChatPane *gtkchat; 524 GaimGtkChatPane *gtkchat;
521 GtkTreeIter iter; 525 GtkTreeIter iter;
522 GtkTreeModel *model; 526 GtkTreeModel *model;
523 GtkTreeSelection *sel; 527 GtkTreeSelection *sel;
524 const char *name; 528 const char *name;
531 if (gtk_tree_selection_get_selected(sel, NULL, &iter)) 535 if (gtk_tree_selection_get_selected(sel, NULL, &iter))
532 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1); 536 gtk_tree_model_get(GTK_TREE_MODEL(model), &iter, 1, &name, -1);
533 else 537 else
534 return; 538 return;
535 539
536 serv_get_info(gaim_conversation_get_gc(conv), (char *)name); 540 serv_get_info(gaim_conversation_get_gc(conv), name);
537 }
538 else {
539 serv_get_info(gaim_conversation_get_gc(conv),
540 (char *)gaim_conversation_get_name(conv));
541
542 gtk_widget_grab_focus(gtkconv->entry);
543 } 541 }
544 } 542 }
545 543
546 static void 544 static void
547 warn_cb(GtkWidget *widget, GaimConversation *conv) 545 warn_cb(GtkWidget *widget, GaimConversation *conv)
548 { 546 {
549 show_warn_dialog(gaim_conversation_get_gc(conv), 547 show_warn_dialog(gaim_conversation_get_gc(conv),
550 (char *)gaim_conversation_get_name(conv)); 548 gaim_conversation_get_name(conv));
551 549
552 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); 550 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
553 } 551 }
554 552
555 static void 553 static void
618 gtkwin = GAIM_GTK_WINDOW(win); 616 gtkwin = GAIM_GTK_WINDOW(win);
619 617
620 /* Create the new dialog. */ 618 /* Create the new dialog. */
621 invite_dialog = gtk_dialog_new_with_buttons( 619 invite_dialog = gtk_dialog_new_with_buttons(
622 _("Invite Buddy Into Chat Room"), 620 _("Invite Buddy Into Chat Room"),
623 GTK_WINDOW(gtkwin->window), 621 GTK_WINDOW(gtkwin->window), 0,
624 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 622 GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
625 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); 623 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
626 624
627 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), 625 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
628 GTK_RESPONSE_OK); 626 GTK_RESPONSE_OK);
629 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6); 627 gtk_container_set_border_width(GTK_CONTAINER(invite_dialog), 6);
851 static void 849 static void
852 menu_alias_cb(gpointer data, guint action, GtkWidget *widget) 850 menu_alias_cb(gpointer data, guint action, GtkWidget *widget)
853 { 851 {
854 GaimConvWindow *win = (GaimConvWindow *)data; 852 GaimConvWindow *win = (GaimConvWindow *)data;
855 GaimConversation *conv; 853 GaimConversation *conv;
856 GaimBuddy *b; 854 GaimAccount *account;
857 855 const char *name;
858 conv = gaim_conv_window_get_active_conversation(win); 856
859 857 conv = gaim_conv_window_get_active_conversation(win);
860 b = gaim_find_buddy(gaim_conversation_get_account(conv), 858 account = gaim_conversation_get_account(conv);
861 gaim_conversation_get_name(conv)); 859 name = gaim_conversation_get_name(conv);
862 860
863 if (b != NULL) { 861 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
864 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) 862 GaimBuddy *b;
863
864 b = gaim_find_buddy(account, name);
865 if (b != NULL)
865 alias_dialog_bud(b); 866 alias_dialog_bud(b);
866 #if 0 867 } else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
867 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) 868 GaimChat *c;
868 alias_dialog_chat((struct chat *)b); 869
869 #endif 870 c = gaim_blist_find_chat(account, name);
871 if (c != NULL)
872 alias_dialog_blist_chat(c);
870 } 873 }
871 } 874 }
872 875
873 static void 876 static void
874 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget) 877 menu_get_info_cb(gpointer data, guint action, GtkWidget *widget)
2080 gtkwin = GAIM_GTK_WINDOW(win); 2083 gtkwin = GAIM_GTK_WINDOW(win);
2081 gtkconv = GAIM_GTK_CONVERSATION(conv); 2084 gtkconv = GAIM_GTK_CONVERSATION(conv);
2082 2085
2083 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE); 2086 gaim_conversation_set_unseen(conv, GAIM_UNSEEN_NONE);
2084 2087
2085 if (gc != NULL) { 2088 if (gc != NULL)
2086 gtk_widget_set_sensitive(gtkwin->menu.insert_link, TRUE);
2087 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl); 2089 prpl_info = GAIM_PLUGIN_PROTOCOL_INFO(gc->prpl);
2088 }
2089 2090
2090 /* Update the menubar */ 2091 /* Update the menubar */
2091 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { 2092 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
2092 gtk_widget_show(gtkwin->menu.view_log); 2093 gtk_widget_show(gtkwin->menu.view_log);
2093 gtk_widget_show(gtkwin->menu.add_pounce); 2094 gtk_widget_show(gtkwin->menu.add_pounce);
2094 gtk_widget_show(gtkwin->menu.get_info); 2095 gtk_widget_show(gtkwin->menu.get_info);
2095 gtk_widget_hide(gtkwin->menu.invite); 2096 gtk_widget_hide(gtkwin->menu.invite);
2097
2098 gtk_widget_show(gtkwin->menu.insert_link);
2096 2099
2097 gtk_widget_show(gtkwin->menu.insert_image); 2100 gtk_widget_show(gtkwin->menu.insert_image);
2098 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE) 2101 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE)
2099 gtk_widget_set_sensitive(gtkwin->menu.insert_image, TRUE); 2102 gtk_widget_set_sensitive(gtkwin->menu.insert_image, TRUE);
2100 else 2103 else
2135 gtk_widget_hide(gtkwin->menu.view_log); 2138 gtk_widget_hide(gtkwin->menu.view_log);
2136 gtk_widget_hide(gtkwin->menu.add_pounce); 2139 gtk_widget_hide(gtkwin->menu.add_pounce);
2137 gtk_widget_hide(gtkwin->menu.get_info); 2140 gtk_widget_hide(gtkwin->menu.get_info);
2138 gtk_widget_show(gtkwin->menu.invite); 2141 gtk_widget_show(gtkwin->menu.invite);
2139 2142
2143 gtk_widget_show(gtkwin->menu.insert_link);
2144
2140 gtk_widget_hide(gtkwin->menu.insert_image); 2145 gtk_widget_hide(gtkwin->menu.insert_image);
2141 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); 2146 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
2142 2147
2143 gtk_widget_hide(gtkwin->menu.warn); 2148 gtk_widget_hide(gtkwin->menu.warn);
2144 gtk_widget_hide(gtkwin->menu.block); 2149 gtk_widget_hide(gtkwin->menu.block);
2145 2150
2146 if (gaim_find_chat(gaim_conversation_get_gc(conv), 2151 if (gaim_blist_find_chat(gaim_conversation_get_account(conv),
2147 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv))) == NULL) { 2152 gaim_conversation_get_name(conv)) == NULL) {
2148 gtk_widget_show(gtkwin->menu.add); 2153 gtk_widget_show(gtkwin->menu.add);
2149 gtk_widget_hide(gtkwin->menu.remove); 2154 gtk_widget_hide(gtkwin->menu.remove);
2150 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); 2155 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
2151 } else { 2156 } else {
2152 gtk_widget_show(gtkwin->menu.remove); 2157 gtk_widget_show(gtkwin->menu.remove);
2981 2986
2982 gtkwin->menu.add_pounce = 2987 gtkwin->menu.add_pounce =
2983 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 2988 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2984 N_("/Conversation/Add Buddy Pounce...")); 2989 N_("/Conversation/Add Buddy Pounce..."));
2985 2990
2991 /* --- */
2992
2993 gtkwin->menu.get_info =
2994 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2995 N_("/Conversation/Get Info"));
2996
2997 gtkwin->menu.warn =
2998 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2999 N_("/Conversation/Warn..."));
3000
3001 gtkwin->menu.invite =
3002 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3003 N_("/Conversation/Invite..."));
3004
3005 /* --- */
3006
2986 gtkwin->menu.alias = 3007 gtkwin->menu.alias =
2987 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3008 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2988 N_("/Conversation/Alias...")); 3009 N_("/Conversation/Alias..."));
2989 3010
2990 gtkwin->menu.get_info = 3011 gtkwin->menu.block =
2991 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3012 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2992 N_("/Conversation/Get Info")); 3013 N_("/Conversation/Block..."));
2993 3014
2994 gtkwin->menu.invite = 3015 gtkwin->menu.add =
2995 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3016 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2996 N_("/Conversation/Invite...")); 3017 N_("/Conversation/Add..."));
3018
3019 gtkwin->menu.remove =
3020 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3021 N_("/Conversation/Remove..."));
2997 3022
2998 /* --- */ 3023 /* --- */
2999 3024
3000 gtkwin->menu.insert_link = 3025 gtkwin->menu.insert_link =
3001 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3026 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3002 N_("/Conversation/Insert URL...")); 3027 N_("/Conversation/Insert Link..."));
3003 3028
3004 gtkwin->menu.insert_image = 3029 gtkwin->menu.insert_image =
3005 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3030 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3006 N_("/Conversation/Insert Image...")); 3031 N_("/Conversation/Insert Image..."));
3007
3008 /* --- */
3009
3010 gtkwin->menu.warn =
3011 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3012 N_("/Conversation/Warn..."));
3013
3014 gtkwin->menu.block =
3015 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3016 N_("/Conversation/Block..."));
3017
3018 gtkwin->menu.add =
3019 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3020 N_("/Conversation/Add..."));
3021
3022 gtkwin->menu.remove =
3023 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
3024 N_("/Conversation/Remove..."));
3025 3032
3026 /* --- */ 3033 /* --- */
3027 3034
3028 gtkwin->menu.logging = 3035 gtkwin->menu.logging =
3029 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 3036 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
4004 gaim_gtkconv_update_font_colors(conv); 4011 gaim_gtkconv_update_font_colors(conv);
4005 4012
4006 /* Setup the font face */ 4013 /* Setup the font face */
4007 gaim_gtkconv_update_font_face(conv); 4014 gaim_gtkconv_update_font_face(conv);
4008 4015
4009 if (conv_type == GAIM_CONV_CHAT) { 4016 if (conv_type == GAIM_CONV_IM) {
4010 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
4011
4012 pane = setup_chat_pane(conv);
4013 }
4014 else if (conv_type == GAIM_CONV_IM) {
4015 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane)); 4017 gtkconv->u.im = g_malloc0(sizeof(GaimGtkImPane));
4016 gtkconv->u.im->a_virgin = TRUE; 4018 gtkconv->u.im->a_virgin = TRUE;
4017 4019
4018 pane = setup_im_pane(conv); 4020 pane = setup_im_pane(conv);
4021 }
4022 else if (conv_type == GAIM_CONV_CHAT) {
4023 gtkconv->u.chat = g_malloc0(sizeof(GaimGtkChatPane));
4024
4025 pane = setup_chat_pane(conv);
4019 } 4026 }
4020 4027
4021 if (pane == NULL) { 4028 if (pane == NULL) {
4022 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat); 4029 if (conv_type == GAIM_CONV_CHAT) g_free(gtkconv->u.chat);
4023 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im); 4030 else if (conv_type == GAIM_CONV_IM) g_free(gtkconv->u.im);