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