comparison src/gtkconv.c @ 7859:e873d0bd0e6c

[gaim-migrate @ 8513] I changed some stuff with conversation menus. Stuff is renamed, moved around, not grayed out, grayed out, visible, somewhat works for chats, etc. Ima finish this tomorrow because it's 6 o'freaking clock. It shouldn't make anything worse, and might make some things better. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 14 Dec 2003 11:03:54 +0000
parents 43f63ff8a6d8
children f9df510460d7
comparison
equal deleted inserted replaced
7858:1ce040412bd5 7859:e873d0bd0e6c
479 479
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 GaimBuddy *b;
485 const char *name; 484 const char *name;
485 GaimConversationType type;
486 486
487 account = gaim_conversation_get_account(conv); 487 account = gaim_conversation_get_account(conv);
488 name = gaim_conversation_get_name(conv); 488 name = gaim_conversation_get_name(conv);
489 b = gaim_find_buddy(account, name); 489 type = gaim_conversation_get_type(conv);
490 490
491 if (b != NULL) 491 if (GAIM_CONV_IM(conv)) {
492 show_confirm_del(b); 492 GaimBuddy *b;
493 else if (account != NULL && gaim_account_is_connected(account)) 493
494 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL); 494 b = gaim_find_buddy(account, name);
495 if (b != NULL)
496 show_confirm_del(b);
497 else if (account != NULL && gaim_account_is_connected(account))
498 gaim_blist_request_add_buddy(account, (char *)name, NULL, NULL);
499 } else if (GAIM_CONV_CHAT(conv)) {
500 GaimChat *c;
501
502 c = gaim_blist_find_chat(account, name);
503 if (c != NULL)
504 show_confirm_del_blist_chat(c);
505 else if (account != NULL && gaim_account_is_connected(account))
506 gaim_blist_request_add_chat(account, NULL, NULL);
507 }
495 508
496 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry); 509 gtk_widget_grab_focus(GAIM_GTK_CONVERSATION(conv)->entry);
497 } 510 }
498 511
499 static void 512 static void
604 win = gaim_conversation_get_window(conv); 617 win = gaim_conversation_get_window(conv);
605 gtkwin = GAIM_GTK_WINDOW(win); 618 gtkwin = GAIM_GTK_WINDOW(win);
606 619
607 /* Create the new dialog. */ 620 /* Create the new dialog. */
608 invite_dialog = gtk_dialog_new_with_buttons( 621 invite_dialog = gtk_dialog_new_with_buttons(
609 _("Gaim - Invite Buddy Into Chat Room"), 622 _("Invite Buddy Into Chat Room"),
610 GTK_WINDOW(gtkwin->window), 623 GTK_WINDOW(gtkwin->window),
611 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, 624 GTK_DIALOG_MODAL, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
612 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); 625 GTK_STOCK_OK, GTK_RESPONSE_OK, NULL);
613 626
614 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog), 627 gtk_dialog_set_default_response(GTK_DIALOG(invite_dialog),
2075 } 2088 }
2076 2089
2077 /* Update the menubar */ 2090 /* Update the menubar */
2078 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) { 2091 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) {
2079 gtk_widget_show(gtkwin->menu.view_log); 2092 gtk_widget_show(gtkwin->menu.view_log);
2080
2081 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE) {
2082 gtk_widget_show(gtkwin->menu.insert_image);
2083 gtk_widget_set_sensitive(gtkconv->toolbar.image, TRUE);
2084
2085 }
2086 else {
2087 gtk_widget_hide(gtkwin->menu.insert_image);
2088 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
2089 }
2090
2091 gtk_widget_show(gtkwin->menu.add_pounce); 2093 gtk_widget_show(gtkwin->menu.add_pounce);
2092 gtk_widget_show(gtkwin->menu.get_info); 2094 gtk_widget_show(gtkwin->menu.get_info);
2095 gtk_widget_hide(gtkwin->menu.invite);
2096
2097 gtk_widget_show(gtkwin->menu.insert_image);
2098 if (gc && prpl_info->options & OPT_PROTO_IM_IMAGE)
2099 gtk_widget_set_sensitive(gtkwin->menu.insert_image, TRUE);
2100 else
2101 gtk_widget_set_sensitive(gtkwin->menu.insert_image, FALSE);
2102
2093 gtk_widget_show(gtkwin->menu.warn); 2103 gtk_widget_show(gtkwin->menu.warn);
2104 if (gc && prpl_info->warn != NULL)
2105 gtk_widget_set_sensitive(gtkwin->menu.warn, TRUE);
2106 else
2107 gtk_widget_set_sensitive(gtkwin->menu.warn, FALSE);
2108
2094 gtk_widget_show(gtkwin->menu.block); 2109 gtk_widget_show(gtkwin->menu.block);
2095 2110
2096 if (gaim_find_buddy(gaim_conversation_get_account(conv), 2111 if (gaim_find_buddy(gaim_conversation_get_account(conv),
2097 gaim_conversation_get_name(conv)) == NULL) { 2112 gaim_conversation_get_name(conv)) == NULL) {
2098
2099 gtk_widget_show(gtkwin->menu.add); 2113 gtk_widget_show(gtkwin->menu.add);
2100 gtk_widget_hide(gtkwin->menu.remove); 2114 gtk_widget_hide(gtkwin->menu.remove);
2101 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE); 2115 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
2102 } 2116 } else {
2103 else {
2104 gtk_widget_show(gtkwin->menu.remove); 2117 gtk_widget_show(gtkwin->menu.remove);
2105 gtk_widget_hide(gtkwin->menu.add); 2118 gtk_widget_hide(gtkwin->menu.add);
2106 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE); 2119 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
2107 } 2120 }
2108
2109 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE); 2121 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
2110 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE); 2122 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
2111
2112 gtk_widget_hide(gtkwin->menu.invite);
2113 2123
2114 if (gtkwin->menu.send_as != NULL) 2124 if (gtkwin->menu.send_as != NULL)
2115 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); 2125 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
2116 2126
2117 if (gtkconv->u.im->anim) { 2127 if (gtkconv->u.im->anim) {
2120 } else { 2130 } else {
2121 window_icon = get_tab_icon(conv); 2131 window_icon = get_tab_icon(conv);
2122 } 2132 }
2123 } 2133 }
2124 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) { 2134 else if (gaim_conversation_get_type(conv) == GAIM_CONV_CHAT) {
2135 gtk_widget_hide(gtkwin->menu.view_log);
2136 gtk_widget_hide(gtkwin->menu.add_pounce);
2137 gtk_widget_hide(gtkwin->menu.get_info);
2125 gtk_widget_show(gtkwin->menu.invite); 2138 gtk_widget_show(gtkwin->menu.invite);
2126 2139
2127 gtk_widget_hide(gtkwin->menu.view_log);
2128 gtk_widget_hide(gtkwin->menu.insert_image); 2140 gtk_widget_hide(gtkwin->menu.insert_image);
2129 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE); 2141 gtk_widget_set_sensitive(gtkconv->toolbar.image, FALSE);
2130 2142
2131 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
2132
2133 gtk_widget_hide(gtkwin->menu.add_pounce);
2134 gtk_widget_hide(gtkwin->menu.get_info);
2135 gtk_widget_hide(gtkwin->menu.warn); 2143 gtk_widget_hide(gtkwin->menu.warn);
2136 gtk_widget_hide(gtkwin->menu.block); 2144 gtk_widget_hide(gtkwin->menu.block);
2137 2145
2138 if (gaim_find_chat(gaim_conversation_get_gc(conv), 2146 if (gaim_find_chat(gaim_conversation_get_gc(conv),
2139 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv))) == NULL) { 2147 gaim_conv_chat_get_id(GAIM_CONV_CHAT(conv))) == NULL) {
2140
2141 gtk_widget_show(gtkwin->menu.add); 2148 gtk_widget_show(gtkwin->menu.add);
2142 gtk_widget_hide(gtkwin->menu.remove); 2149 gtk_widget_hide(gtkwin->menu.remove);
2143 } 2150 gtk_widget_set_sensitive(gtkwin->menu.alias, FALSE);
2144 else { 2151 } else {
2145 gtk_widget_show(gtkwin->menu.remove); 2152 gtk_widget_show(gtkwin->menu.remove);
2146 gtk_widget_hide(gtkwin->menu.add); 2153 gtk_widget_hide(gtkwin->menu.add);
2147 } 2154 gtk_widget_set_sensitive(gtkwin->menu.alias, TRUE);
2148 2155 }
2149 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); 2156 gtk_widget_set_sensitive(gtkwin->menu.add, TRUE);
2150 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); 2157 gtk_widget_set_sensitive(gtkwin->menu.remove, TRUE);
2151 2158
2152 if (gtkwin->menu.send_as != NULL) 2159 if (gtkwin->menu.send_as != NULL)
2153 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); 2160 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win);
2154 window_icon = get_tab_icon(conv); 2161 window_icon = get_tab_icon(conv);
2155 } 2162 }
2858 save_convo(GtkWidget *save, GaimConversation *c) 2865 save_convo(GtkWidget *save, GaimConversation *c)
2859 { 2866 {
2860 char buf[BUF_LONG]; 2867 char buf[BUF_LONG];
2861 GtkWidget *window; 2868 GtkWidget *window;
2862 2869
2863 window = gtk_file_selection_new(_("Gaim - Save Conversation")); 2870 window = gtk_file_selection_new(_("Save Conversation"));
2864 2871
2865 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log", 2872 g_snprintf(buf, sizeof(buf), "%s" G_DIR_SEPARATOR_S "%s.log",
2866 gaim_home_dir(), gaim_normalize(c->account, c->name)); 2873 gaim_home_dir(), gaim_normalize(c->account, c->name));
2867 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf); 2874 gtk_file_selection_set_filename(GTK_FILE_SELECTION(window), buf);
2868 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button), 2875 g_object_set_data(G_OBJECT(GTK_FILE_SELECTION(window)->ok_button),
2877 static GtkItemFactoryEntry menu_items[] = 2884 static GtkItemFactoryEntry menu_items[] =
2878 { 2885 {
2879 /* Conversation menu */ 2886 /* Conversation menu */
2880 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" }, 2887 { N_("/_Conversation"), NULL, NULL, 0, "<Branch>" },
2881 2888
2882 { N_("/Conversation/_New Conversation..."), NULL, menu_new_conv_cb, 2889 { N_("/Conversation/New _Instant Message..."), "<CTL>I", menu_new_conv_cb,
2883 0, "<StockItem>", GTK_STOCK_NEW }, 2890 0, "<StockItem>", GAIM_STOCK_IM },
2884 2891
2885 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" }, 2892 { "/Conversation/sep0", NULL, NULL, 0, "<Separator>" },
2886 2893
2894 { N_("/Conversation/Find..."), NULL, menu_find_cb, 0, "<StockItem>", GTK_STOCK_FIND },
2895 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL },
2887 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0, 2896 { N_("/Conversation/_Save As..."), NULL, menu_save_as_cb, 0,
2888 "<StockItem>", GTK_STOCK_SAVE_AS }, 2897 "<StockItem>", GTK_STOCK_SAVE_AS },
2889 { N_("/Conversation/View _Log"), NULL, menu_view_log_cb, 0, NULL },
2890 { N_("/Conversation/Find..."), NULL, menu_find_cb, 0, "<StockItem>", GTK_STOCK_FIND },
2891 2898
2892 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" }, 2899 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>" },
2893 2900
2894 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, 2901 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
2895 0, NULL }, 2902 0, NULL },
2903 { N_("/Conversation/_Get Info"), NULL, menu_get_info_cb, 0,
2904 "<StockItem>", GAIM_STOCK_INFO },
2905 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
2906 "<StockItem>", GAIM_STOCK_WARN },
2907 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
2908 "<StockItem>", GAIM_STOCK_INVITE },
2909
2910 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
2911
2896 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0, 2912 { N_("/Conversation/A_lias..."), NULL, menu_alias_cb, 0,
2897 "<StockItem>", GAIM_STOCK_EDIT }, 2913 "<StockItem>", GAIM_STOCK_EDIT },
2898 { N_("/Conversation/_Get Info..."), NULL, menu_get_info_cb, 0,
2899 "<StockItem>", GAIM_STOCK_INFO },
2900 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
2901 "<StockItem>", GAIM_STOCK_INVITE },
2902
2903 { "/Conversation/sep2", NULL, NULL, 0, "<Separator>" },
2904
2905 { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0,
2906 "<StockItem>", GAIM_STOCK_LINK },
2907 { N_("/Conversation/Insert _Image..."), NULL, menu_insert_image_cb, 0,
2908 "<StockItem>", GAIM_STOCK_IMAGE },
2909
2910 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
2911
2912 { N_("/Conversation/_Warn..."), NULL, menu_warn_cb, 0,
2913 "<StockItem>", GAIM_STOCK_WARN },
2914 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0, 2914 { N_("/Conversation/_Block..."), NULL, menu_block_cb, 0,
2915 "<StockItem>", GAIM_STOCK_BLOCK }, 2915 "<StockItem>", GAIM_STOCK_BLOCK },
2916 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0, 2916 { N_("/Conversation/_Add..."), NULL, menu_add_remove_cb, 0,
2917 "<StockItem>", GTK_STOCK_ADD }, 2917 "<StockItem>", GTK_STOCK_ADD },
2918 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0, 2918 { N_("/Conversation/_Remove..."), NULL, menu_add_remove_cb, 0,
2919 "<StockItem>", GTK_STOCK_REMOVE }, 2919 "<StockItem>", GTK_STOCK_REMOVE },
2920 2920
2921 { "/Conversation/sep3", NULL, NULL, 0, "<Separator>" },
2922
2923 { N_("/Conversation/Insert Lin_k..."), NULL, menu_insert_link_cb, 0,
2924 "<StockItem>", GAIM_STOCK_LINK },
2925 { N_("/Conversation/Insert Imag_e..."), NULL, menu_insert_image_cb, 0,
2926 "<StockItem>", GAIM_STOCK_IMAGE },
2927
2921 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" }, 2928 { "/Conversation/sep4", NULL, NULL, 0, "<Separator>" },
2922 2929
2923 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0, 2930 { N_("/Conversation/_Close"), NULL, menu_close_conv_cb, 0,
2924 "<StockItem>", GTK_STOCK_CLOSE }, 2931 "<StockItem>", GTK_STOCK_CLOSE },
2925 2932
2980 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 2987 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2981 N_("/Conversation/Alias...")); 2988 N_("/Conversation/Alias..."));
2982 2989
2983 gtkwin->menu.get_info = 2990 gtkwin->menu.get_info =
2984 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 2991 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2985 N_("/Conversation/Get Info...")); 2992 N_("/Conversation/Get Info"));
2986 2993
2987 gtkwin->menu.invite = 2994 gtkwin->menu.invite =
2988 gtk_item_factory_get_widget(gtkwin->menu.item_factory, 2995 gtk_item_factory_get_widget(gtkwin->menu.item_factory,
2989 N_("/Conversation/Invite...")); 2996 N_("/Conversation/Invite..."));
2990 2997