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