Mercurial > pidgin
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); |