Mercurial > pidgin.yaz
comparison src/gtkconv.c @ 7326:00a9ab26d607
[gaim-migrate @ 7912]
Added an option to remove the formatting toolbar, both globally and on a
per-window basis. Patch by Nathan Fredrickson.
committer: Tailor Script <tailor@pidgin.im>
author | Christian Hammond <chipx86@chipx86.com> |
---|---|
date | Sat, 25 Oct 2003 00:03:13 +0000 |
parents | ab828b8c3f22 |
children | 414c701ef1ff |
comparison
equal
deleted
inserted
replaced
7325:35e652831230 | 7326:00a9ab26d607 |
---|---|
927 gaim_conversation_set_logging(conv, | 927 gaim_conversation_set_logging(conv, |
928 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); | 928 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget))); |
929 } | 929 } |
930 | 930 |
931 static void | 931 static void |
932 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) | 932 menu_toolbar_cb(gpointer data, guint action, GtkWidget *widget) |
933 { | 933 { |
934 GaimConvWindow *win = (GaimConvWindow *)data; | 934 GaimConvWindow *win = (GaimConvWindow *)data; |
935 GaimConversation *conv; | 935 GaimConversation *conv; |
936 GaimGtkConversation *gtkconv; | 936 GaimGtkConversation *gtkconv; |
937 | 937 |
938 conv = gaim_conv_window_get_active_conversation(win); | 938 conv = gaim_conv_window_get_active_conversation(win); |
939 | 939 |
940 if (conv == NULL) | |
941 return; | |
942 | |
943 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
944 | |
945 gtkconv->show_formatting_toolbar = | |
946 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); | |
947 | |
948 if (gtkconv->show_formatting_toolbar) | |
949 gtk_widget_show(gtkconv->toolbar.toolbar); | |
950 else | |
951 gtk_widget_hide(gtkconv->toolbar.toolbar); | |
952 } | |
953 | |
954 static void | |
955 menu_sounds_cb(gpointer data, guint action, GtkWidget *widget) | |
956 { | |
957 GaimConvWindow *win = (GaimConvWindow *)data; | |
958 GaimConversation *conv; | |
959 GaimGtkConversation *gtkconv; | |
960 | |
961 conv = gaim_conv_window_get_active_conversation(win); | |
962 | |
940 if (!conv) | 963 if (!conv) |
941 return; | 964 return; |
942 | 965 |
943 gtkconv = GAIM_GTK_CONVERSATION(conv); | 966 gtkconv = GAIM_GTK_CONVERSATION(conv); |
944 | 967 |
945 gtkconv->make_sound = | 968 gtkconv->make_sound = |
946 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); | 969 gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); |
947 } | 970 } |
948 | |
949 | |
950 | 971 |
951 void | 972 void |
952 im_cb(GtkWidget *widget, GaimConversation *conv) | 973 im_cb(GtkWidget *widget, GaimConversation *conv) |
953 { | 974 { |
954 GaimConversation *conv2; | 975 GaimConversation *conv2; |
2015 GaimConversation *conv; | 2036 GaimConversation *conv; |
2016 GaimGtkConversation *gtkconv; | 2037 GaimGtkConversation *gtkconv; |
2017 GaimGtkWindow *gtkwin; | 2038 GaimGtkWindow *gtkwin; |
2018 GaimConnection *gc; | 2039 GaimConnection *gc; |
2019 GdkPixbuf *window_icon = NULL; | 2040 GdkPixbuf *window_icon = NULL; |
2020 | 2041 |
2021 win = (GaimConvWindow *)user_data; | 2042 win = (GaimConvWindow *)user_data; |
2022 | 2043 |
2023 conv = gaim_conv_window_get_conversation_at(win, page_num); | 2044 conv = gaim_conv_window_get_conversation_at(win, page_num); |
2024 | 2045 |
2025 g_return_if_fail(conv != NULL); | 2046 g_return_if_fail(conv != NULL); |
2072 | 2093 |
2073 gtk_widget_hide(gtkwin->menu.invite); | 2094 gtk_widget_hide(gtkwin->menu.invite); |
2074 | 2095 |
2075 if (gtkwin->menu.send_as != NULL) | 2096 if (gtkwin->menu.send_as != NULL) |
2076 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); | 2097 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
2077 | 2098 |
2078 if (gtkconv->u.im->anim) { | 2099 if (gtkconv->u.im->anim) { |
2079 window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); | 2100 window_icon = gdk_pixbuf_animation_get_static_image(gtkconv->u.im->anim); |
2080 g_object_ref(window_icon); | 2101 g_object_ref(window_icon); |
2081 } else { | 2102 } else { |
2082 window_icon = get_tab_icon(conv); | 2103 window_icon = get_tab_icon(conv); |
2107 gtk_widget_hide(gtkwin->menu.add); | 2128 gtk_widget_hide(gtkwin->menu.add); |
2108 } | 2129 } |
2109 | 2130 |
2110 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); | 2131 gtk_widget_set_sensitive(gtkwin->menu.add, FALSE); |
2111 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); | 2132 gtk_widget_set_sensitive(gtkwin->menu.remove, FALSE); |
2112 | 2133 |
2113 if (gtkwin->menu.send_as != NULL) | 2134 if (gtkwin->menu.send_as != NULL) |
2114 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); | 2135 g_timeout_add(0, (GSourceFunc)update_send_as_selection, win); |
2115 window_icon = get_tab_icon(conv); | 2136 window_icon = get_tab_icon(conv); |
2116 } | 2137 } |
2117 | 2138 |
2118 update_typing_icon(conv); | 2139 update_typing_icon(conv); |
2119 | 2140 |
2120 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), | 2141 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.logging), |
2121 gaim_conversation_is_logging(conv)); | 2142 gaim_conversation_is_logging(conv)); |
2122 | 2143 |
2123 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), | 2144 gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(gtkwin->menu.sounds), |
2124 gtkconv->make_sound); | 2145 gtkconv->make_sound); |
2125 | 2146 |
2147 gtk_check_menu_item_set_active( | |
2148 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), | |
2149 gtkconv->show_formatting_toolbar); | |
2150 | |
2126 gtk_widget_grab_focus(gtkconv->entry); | 2151 gtk_widget_grab_focus(gtkconv->entry); |
2127 | 2152 |
2128 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); | 2153 gtk_window_set_icon(GTK_WINDOW(gtkwin->window), window_icon); |
2129 g_object_unref(G_OBJECT(window_icon)); | 2154 g_object_unref(G_OBJECT(window_icon)); |
2130 gtk_window_set_title(GTK_WINDOW(gtkwin->window), | 2155 gtk_window_set_title(GTK_WINDOW(gtkwin->window), |
2952 | 2977 |
2953 /* Options */ | 2978 /* Options */ |
2954 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, | 2979 { N_("/_Options"), NULL, NULL, 0, "<Branch>" }, |
2955 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, | 2980 { N_("/Options/Enable _Logging"), NULL, menu_logging_cb, 0, "<CheckItem>" }, |
2956 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, | 2981 { N_("/Options/Enable _Sounds"), NULL, menu_sounds_cb, 0, "<CheckItem>" }, |
2982 { N_("/Options/Show Formatting _Toolbar"), NULL, menu_toolbar_cb, 0, "<CheckItem>" }, | |
2957 }; | 2983 }; |
2958 | 2984 |
2959 static const int menu_item_count = | 2985 static const int menu_item_count = |
2960 sizeof(menu_items) / sizeof(*menu_items); | 2986 sizeof(menu_items) / sizeof(*menu_items); |
2961 | 2987 |
3046 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | 3072 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
3047 N_("/Options/Enable Logging")); | 3073 N_("/Options/Enable Logging")); |
3048 gtkwin->menu.sounds = | 3074 gtkwin->menu.sounds = |
3049 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | 3075 gtk_item_factory_get_widget(gtkwin->menu.item_factory, |
3050 N_("/Options/Enable Sounds")); | 3076 N_("/Options/Enable Sounds")); |
3077 gtkwin->menu.show_formatting_toolbar = | |
3078 gtk_item_factory_get_widget(gtkwin->menu.item_factory, | |
3079 N_("/Options/Show Formatting Toolbar")); | |
3051 | 3080 |
3052 generate_send_as_items(win, NULL); | 3081 generate_send_as_items(win, NULL); |
3053 | 3082 |
3054 gtk_widget_show(gtkwin->menu.menubar); | 3083 gtk_widget_show(gtkwin->menu.menubar); |
3055 | 3084 |
3375 | 3404 |
3376 sep = gtk_hseparator_new(); | 3405 sep = gtk_hseparator_new(); |
3377 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); | 3406 gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0); |
3378 | 3407 |
3379 gtk_widget_show_all(vbox); | 3408 gtk_widget_show_all(vbox); |
3409 | |
3410 if (!gaim_prefs_get_bool("/gaim/gtk/conversations/show_formatting_toolbar")) | |
3411 gtk_widget_hide(vbox); | |
3380 | 3412 |
3381 return vbox; | 3413 return vbox; |
3382 } | 3414 } |
3383 | 3415 |
3384 static GtkWidget * | 3416 static GtkWidget * |
4056 | 4088 |
4057 new_ui = TRUE; | 4089 new_ui = TRUE; |
4058 | 4090 |
4059 gtkconv->make_sound = TRUE; | 4091 gtkconv->make_sound = TRUE; |
4060 | 4092 |
4093 gtkconv->show_formatting_toolbar = gaim_prefs_get_bool( | |
4094 "/gaim/gtk/conversations/show_formatting_toolbar"); | |
4095 | |
4061 g_signal_connect_swapped(G_OBJECT(pane), "focus", | 4096 g_signal_connect_swapped(G_OBJECT(pane), "focus", |
4062 G_CALLBACK(gtk_widget_grab_focus), | 4097 G_CALLBACK(gtk_widget_grab_focus), |
4063 gtkconv->entry); | 4098 gtkconv->entry); |
4064 } | 4099 } |
4065 | 4100 |
4114 gtk_widget_show(tabby); | 4149 gtk_widget_show(tabby); |
4115 gtk_widget_show(menu_tabby); | 4150 gtk_widget_show(menu_tabby); |
4116 | 4151 |
4117 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) | 4152 if (gaim_conversation_get_type(conv) == GAIM_CONV_IM) |
4118 gaim_gtkconv_update_buddy_icon(conv); | 4153 gaim_gtkconv_update_buddy_icon(conv); |
4119 | 4154 |
4120 /* Add this pane to the conversations notebook. */ | 4155 /* Add this pane to the conversations notebook. */ |
4121 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby); | 4156 gtk_notebook_append_page(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, tabby); |
4122 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby); | 4157 gtk_notebook_set_menu_label(GTK_NOTEBOOK(gtkwin->notebook), tab_cont, menu_tabby); |
4123 | 4158 |
4124 gtk_widget_show(tab_cont); | 4159 gtk_widget_show(tab_cont); |
5004 gtkwin = GAIM_GTK_WINDOW(win); | 5039 gtkwin = GAIM_GTK_WINDOW(win); |
5005 gtkconv = GAIM_GTK_CONVERSATION(conv); | 5040 gtkconv = GAIM_GTK_CONVERSATION(conv); |
5006 | 5041 |
5007 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); | 5042 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
5008 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); | 5043 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
5009 | 5044 |
5010 if(conv == gaim_conv_window_get_active_conversation(win)) | 5045 if(conv == gaim_conv_window_get_active_conversation(win)) |
5011 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); | 5046 gtk_window_set_title(GTK_WINDOW(gtkwin->window), title); |
5012 } | 5047 } |
5013 | 5048 |
5014 static void | 5049 static void |
5027 status = get_tab_icon(conv); | 5062 status = get_tab_icon(conv); |
5028 | 5063 |
5029 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); | 5064 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->icon), status); |
5030 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); | 5065 gtk_image_set_from_pixbuf(GTK_IMAGE(gtkconv->menu_icon), status); |
5031 | 5066 |
5032 if (gaim_conv_window_get_active_conversation(win) == conv && gtkconv->u.im->anim == NULL) | 5067 if (gaim_conv_window_get_active_conversation(win) == conv && gtkconv->u.im->anim == NULL) |
5033 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status); | 5068 gtk_window_set_icon(GTK_WINDOW(GAIM_GTK_WINDOW(win)->window), status); |
5034 | 5069 |
5035 if(status) | 5070 if(status) |
5036 g_object_unref(status); | 5071 g_object_unref(status); |
5037 | 5072 |
5955 continue; | 5990 continue; |
5956 | 5991 |
5957 gtkwin = GAIM_GTK_WINDOW(win); | 5992 gtkwin = GAIM_GTK_WINDOW(win); |
5958 | 5993 |
5959 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); | 5994 gtk_notebook_set_tab_pos(GTK_NOTEBOOK(gtkwin->notebook), pos); |
5995 } | |
5996 } | |
5997 | |
5998 static void | |
5999 show_formatting_toolbar_pref_cb(const char *name, GaimPrefType type, | |
6000 gpointer value, gpointer data) | |
6001 { | |
6002 GList *l; | |
6003 GaimConversation *conv; | |
6004 GaimGtkConversation *gtkconv; | |
6005 GaimConvWindow *win; | |
6006 GaimGtkWindow *gtkwin; | |
6007 | |
6008 for (l = gaim_get_conversations(); l != NULL; l = l->next) | |
6009 { | |
6010 conv = (GaimConversation *)l->data; | |
6011 | |
6012 if (!GAIM_IS_GTK_CONVERSATION(conv)) | |
6013 continue; | |
6014 | |
6015 gtkconv = GAIM_GTK_CONVERSATION(conv); | |
6016 win = gaim_conversation_get_window(conv); | |
6017 gtkwin = GAIM_GTK_WINDOW(win); | |
6018 | |
6019 gtkconv->show_formatting_toolbar = (gboolean)value; | |
6020 gtk_check_menu_item_set_active( | |
6021 GTK_CHECK_MENU_ITEM(gtkwin->menu.show_formatting_toolbar), | |
6022 gtkconv->show_formatting_toolbar); | |
6023 | |
6024 if (gtkconv->show_formatting_toolbar) | |
6025 gtk_widget_show(gtkconv->toolbar.toolbar); | |
6026 else | |
6027 gtk_widget_hide(gtkconv->toolbar.toolbar); | |
5960 } | 6028 } |
5961 } | 6029 } |
5962 | 6030 |
5963 static void | 6031 static void |
5964 im_button_type_pref_cb(const char *name, GaimPrefType type, | 6032 im_button_type_pref_cb(const char *name, GaimPrefType type, |
6095 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); | 6163 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_font", FALSE); |
6096 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); | 6164 gaim_prefs_add_bool("/gaim/gtk/conversations/use_custom_size", FALSE); |
6097 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); | 6165 gaim_prefs_add_bool("/gaim/gtk/conversations/html_shortcuts", FALSE); |
6098 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); | 6166 gaim_prefs_add_bool("/gaim/gtk/conversations/smiley_shortcuts", FALSE); |
6099 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); | 6167 gaim_prefs_add_bool("/gaim/gtk/conversations/show_urls_as_links", TRUE); |
6168 gaim_prefs_add_bool("/gaim/gtk/conversations/show_formatting_toolbar", TRUE); | |
6100 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); | 6169 gaim_prefs_add_string("/gaim/gtk/conversations/bgcolor", "#FFFFFF"); |
6101 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); | 6170 gaim_prefs_add_string("/gaim/gtk/conversations/fgcolor", "#000000"); |
6102 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); | 6171 gaim_prefs_add_string("/gaim/gtk/conversations/font_face", ""); |
6103 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); | 6172 gaim_prefs_add_int("/gaim/gtk/conversations/font_size", 3); |
6104 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); | 6173 gaim_prefs_add_bool("/gaim/gtk/conversations/tabs", TRUE); |
6137 close_on_tabs_pref_cb, NULL); | 6206 close_on_tabs_pref_cb, NULL); |
6138 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", | 6207 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_smileys", |
6139 show_smileys_pref_cb, NULL); | 6208 show_smileys_pref_cb, NULL); |
6140 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", | 6209 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_timestamps", |
6141 show_timestamps_pref_cb, NULL); | 6210 show_timestamps_pref_cb, NULL); |
6211 gaim_prefs_connect_callback("/gaim/gtk/conversations/show_formatting_toolbar", | |
6212 show_formatting_toolbar_pref_cb, NULL); | |
6142 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", | 6213 gaim_prefs_connect_callback("/gaim/gtk/conversations/spellcheck", |
6143 spellcheck_pref_cb, NULL); | 6214 spellcheck_pref_cb, NULL); |
6144 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", | 6215 gaim_prefs_connect_callback("/gaim/gtk/conversations/tab_side", |
6145 tab_side_pref_cb, NULL); | 6216 tab_side_pref_cb, NULL); |
6146 | 6217 |