pidgin/gtkimhtmltoolbar.c

changeset 18545
5af898e91ec2
parent 17398
1edf059a4a26
parent 18240
0a7d2fde749b
child 18546
3515b5b454e9
equal deleted inserted replaced
17398:1edf059a4a26 18545:5af898e91ec2
71 71
72 static void 72 static void
73 do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar) 73 do_small(GtkWidget *smalltb, GtkIMHtmlToolbar *toolbar)
74 { 74 {
75 g_return_if_fail(toolbar != NULL); 75 g_return_if_fail(toolbar != NULL);
76 gtk_imhtml_font_shrink(GTK_IMHTML(toolbar->imhtml)); 76 /* Only shrink the font on activation, not deactivation as well */
77 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(smalltb)))
78 gtk_imhtml_font_shrink(GTK_IMHTML(toolbar->imhtml));
77 gtk_widget_grab_focus(toolbar->imhtml); 79 gtk_widget_grab_focus(toolbar->imhtml);
78 } 80 }
79 81
80 static void 82 static void
81 do_big(GtkWidget *large, GtkIMHtmlToolbar *toolbar) 83 do_big(GtkWidget *large, GtkIMHtmlToolbar *toolbar)
82 { 84 {
83 g_return_if_fail(toolbar); 85 g_return_if_fail(toolbar);
84 gtk_imhtml_font_grow(GTK_IMHTML(toolbar->imhtml)); 86 /* Only grow the font on activation, not deactivation as well */
87 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(large)))
88 gtk_imhtml_font_grow(GTK_IMHTML(toolbar->imhtml));
85 gtk_widget_grab_focus(toolbar->imhtml); 89 gtk_widget_grab_focus(toolbar->imhtml);
86 } 90 }
87 91
88 static void 92 static void
89 destroy_toolbar_font(GtkWidget *widget, GdkEvent *event, 93 destroy_toolbar_font(GtkWidget *widget, GdkEvent *event,
802 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, 806 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA,
803 0, 0, NULL, NULL, toolbar); 807 0, 0, NULL, NULL, toolbar);
804 g_object_unref(object); 808 g_object_unref(object);
805 } 809 }
806 810
807 static void update_buttons(GtkIMHtmlToolbar *toolbar) { 811 static void update_buttons(GtkIMHtmlToolbar *toolbar)
812 {
808 gboolean bold, italic, underline; 813 gboolean bold, italic, underline;
809 char *tmp; 814 char *tmp;
810 char *tmp2; 815 char *tmp2;
811 816
812 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml), 817 gtk_imhtml_get_current_format(GTK_IMHTML(toolbar->imhtml),
860 { 865 {
861 if(mark != gtk_text_buffer_get_insert(buffer)) 866 if(mark != gtk_text_buffer_get_insert(buffer))
862 return; 867 return;
863 868
864 update_buttons(toolbar); 869 update_buttons(toolbar);
870 }
871
872
873 /* This comes from gtkmenutoolbutton.c from gtk+
874 * Copyright (C) 2003 Ricardo Fernandez Pascual
875 * Copyright (C) 2004 Paolo Borelli
876 */
877 static void
878 menu_position_func (GtkMenu *menu,
879 int *x,
880 int *y,
881 gboolean *push_in,
882 gpointer data)
883 {
884 GtkWidget *widget = GTK_WIDGET(data);
885 GtkRequisition menu_req;
886 gint ythickness = widget->style->ythickness;
887 int savy;
888
889 gtk_widget_size_request(GTK_WIDGET (menu), &menu_req);
890 gdk_window_get_origin(widget->window, x, y);
891 *x += widget->allocation.x;
892 *y += widget->allocation.y + widget->allocation.height;
893 savy = *y;
894
895 pidgin_menu_position_func_helper(menu, x, y, push_in, data);
896
897 if (savy > *y + ythickness + 1)
898 *y -= widget->allocation.height;
899 }
900
901 static void pidgin_menu_clicked(GtkWidget *button, GtkMenu *menu)
902 {
903 gtk_widget_show_all(GTK_WIDGET(menu));
904 gtk_menu_popup(menu, NULL, NULL, menu_position_func, button, 0, gtk_get_current_event_time());
905 }
906
907 static void pidgin_menu_deactivate(GtkWidget *menu, GtkToggleButton *button)
908 {
909 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), FALSE);
865 } 910 }
866 911
867 enum { 912 enum {
868 LAST_SIGNAL 913 LAST_SIGNAL
869 }; 914 };
909 gobject_class = (GObjectClass*) class; 954 gobject_class = (GObjectClass*) class;
910 parent_class = gtk_type_class(GTK_TYPE_HBOX); 955 parent_class = gtk_type_class(GTK_TYPE_HBOX);
911 gobject_class->finalize = gtk_imhtmltoolbar_finalize; 956 gobject_class->finalize = gtk_imhtmltoolbar_finalize;
912 } 957 }
913 958
959 static void gtk_imhtmltoolbar_create_old_buttons(GtkIMHtmlToolbar *toolbar)
960 {
961 GtkWidget *button;
962 /* Bold */
963 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD);
964 g_signal_connect(G_OBJECT(button), "clicked",
965 G_CALLBACK(do_bold), toolbar);
966 toolbar->bold = button;
967
968
969 /* Italic */
970 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC);
971 g_signal_connect(G_OBJECT(button), "clicked",
972 G_CALLBACK(do_italic), toolbar);
973 toolbar->italic = button;
974
975 /* Underline */
976 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE);
977 g_signal_connect(G_OBJECT(button), "clicked",
978 G_CALLBACK(do_underline), toolbar);
979 toolbar->underline = button;
980
981 /* Increase font size */
982 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_LARGER);
983 g_signal_connect(G_OBJECT(button), "clicked",
984 G_CALLBACK(do_big), toolbar);
985 toolbar->larger_size = button;
986
987 /* Decrease font size */
988 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER);
989 g_signal_connect(G_OBJECT(button), "clicked",
990 G_CALLBACK(do_small), toolbar);
991 toolbar->smaller_size = button;
992
993 /* Font Face */
994
995 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FONT_FACE);
996 g_signal_connect(G_OBJECT(button), "clicked",
997 G_CALLBACK(toggle_font), toolbar);
998 toolbar->font = button;
999
1000 /* Foreground Color */
1001 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FGCOLOR);
1002 g_signal_connect(G_OBJECT(button), "clicked",
1003 G_CALLBACK(toggle_fg_color), toolbar);
1004 toolbar->fgcolor = button;
1005
1006 /* Background Color */
1007 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_BGCOLOR);
1008 g_signal_connect(G_OBJECT(button), "clicked",
1009 G_CALLBACK(toggle_bg_color), toolbar);
1010 toolbar->bgcolor = button;
1011
1012 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_LINK);
1013 g_signal_connect(G_OBJECT(button), "clicked",
1014 G_CALLBACK(insert_link_cb), toolbar);
1015 toolbar->link = button;
1016
1017 /* Insert IM Image */
1018 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE);
1019 g_signal_connect(G_OBJECT(button), "clicked",
1020 G_CALLBACK(insert_image_cb), toolbar);
1021 toolbar->image = button;
1022
1023 /* Insert Smiley */
1024 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY);
1025 g_signal_connect(G_OBJECT(button), "clicked",
1026 G_CALLBACK(insert_smiley_cb), toolbar);
1027 toolbar->smiley = button;
1028 }
1029
1030 static void
1031 button_sensitiveness_changed(GtkWidget *button, gpointer dontcare, GtkWidget *item)
1032 {
1033 gtk_widget_set_sensitive(item, GTK_WIDGET_IS_SENSITIVE(button));
1034 }
1035
1036 static void
1037 update_menuitem(GtkToggleButton *button, GtkCheckMenuItem *item)
1038 {
1039 g_signal_handlers_block_by_func(G_OBJECT(item), G_CALLBACK(gtk_button_clicked), button);
1040 gtk_check_menu_item_set_active(item, gtk_toggle_button_get_active(button));
1041 g_signal_handlers_unblock_by_func(G_OBJECT(item), G_CALLBACK(gtk_button_clicked), button);
1042 }
1043
914 static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar) 1044 static void gtk_imhtmltoolbar_init (GtkIMHtmlToolbar *toolbar)
915 { 1045 {
916 GtkWidget *hbox = GTK_WIDGET(toolbar); 1046 GtkWidget *hbox = GTK_WIDGET(toolbar);
1047 GtkWidget *bbox;
1048 GtkWidget *image;
1049 GtkWidget *label;
1050 GtkWidget *insert_button;
1051 GtkWidget *font_button;
1052 GtkWidget *font_menu;
1053 GtkWidget *insert_menu;
1054 GtkWidget *menuitem;
917 GtkWidget *button; 1055 GtkWidget *button;
918 GtkWidget *sep; 1056 GtkWidget *sep;
919 GtkSizeGroup *sg; 1057 int i;
1058 struct {
1059 const char *label;
1060 GtkWidget **button;
1061 } buttons[] = {
1062 {_("_Bold"), &toolbar->bold},
1063 {_("_Italic"), &toolbar->italic},
1064 {_("_Underline"), &toolbar->underline},
1065 {_("_Larger"), &toolbar->larger_size},
1066 #if 0
1067 {_("_Normal"), &toolbar->normal_size},
1068 #endif
1069 {_("_Smaller"), &toolbar->smaller_size},
1070 {_("_Font face"), &toolbar->font},
1071 {_("_Foreground color"), &toolbar->fgcolor},
1072 {_("_Background color"), &toolbar->bgcolor},
1073 {NULL, NULL}
1074 };
1075
920 1076
921 toolbar->imhtml = NULL; 1077 toolbar->imhtml = NULL;
922 toolbar->font_dialog = NULL; 1078 toolbar->font_dialog = NULL;
923 toolbar->fgcolor_dialog = NULL; 1079 toolbar->fgcolor_dialog = NULL;
924 toolbar->bgcolor_dialog = NULL; 1080 toolbar->bgcolor_dialog = NULL;
927 toolbar->image_dialog = NULL; 1083 toolbar->image_dialog = NULL;
928 1084
929 toolbar->tooltips = gtk_tooltips_new(); 1085 toolbar->tooltips = gtk_tooltips_new();
930 1086
931 gtk_box_set_spacing(GTK_BOX(toolbar), 3); 1087 gtk_box_set_spacing(GTK_BOX(toolbar), 3);
932 sg = gtk_size_group_new(GTK_SIZE_GROUP_BOTH); 1088
933 1089 gtk_imhtmltoolbar_create_old_buttons(toolbar);
934 /* Bold */ 1090
935 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_BOLD); 1091 /* Fonts */
936 gtk_size_group_add_widget(sg, button); 1092 font_button = gtk_toggle_button_new();
937 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1093 gtk_button_set_relief(GTK_BUTTON(font_button), GTK_RELIEF_NONE);
938 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Bold"), NULL); 1094 bbox = gtk_hbox_new(FALSE, 3);
939 1095 gtk_container_add(GTK_CONTAINER(font_button), bbox);
940 g_signal_connect(G_OBJECT(button), "clicked", 1096 image = gtk_image_new_from_stock(GTK_STOCK_BOLD, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
941 G_CALLBACK(do_bold), toolbar); 1097 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
942 1098 label = gtk_label_new_with_mnemonic(_("_Font"));
943 toolbar->bold = button; 1099 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
944 1100 gtk_box_pack_start(GTK_BOX(hbox), font_button, FALSE, FALSE, 0);
945 /* Italic */ 1101 gtk_widget_show_all(font_button);
946 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_ITALIC); 1102
947 gtk_size_group_add_widget(sg, button); 1103 font_menu = gtk_menu_new();
948 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1104
949 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Italic"), NULL); 1105
950 1106 for (i = 0; buttons[i].label; i++) {
951 g_signal_connect(G_OBJECT(button), "clicked", 1107 GtkWidget *old = *buttons[i].button;
952 G_CALLBACK(do_italic), toolbar); 1108 menuitem = gtk_check_menu_item_new_with_mnemonic(buttons[i].label);
953 1109 g_signal_connect_swapped(G_OBJECT(menuitem), "activate",
954 toolbar->italic = button; 1110 G_CALLBACK(gtk_button_clicked), old);
955 1111 g_signal_connect_after(G_OBJECT(old), "toggled",
956 /* Underline */ 1112 G_CALLBACK(update_menuitem), menuitem);
957 button = pidgin_pixbuf_toolbar_button_from_stock(GTK_STOCK_UNDERLINE); 1113 gtk_menu_shell_append(GTK_MENU_SHELL(font_menu), menuitem);
958 gtk_size_group_add_widget(sg, button); 1114 g_signal_connect(G_OBJECT(old), "notify::sensitive",
959 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1115 G_CALLBACK(button_sensitiveness_changed), menuitem);
960 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Underline"), NULL); 1116 }
961 1117
962 g_signal_connect(G_OBJECT(button), "clicked", 1118 g_signal_connect(G_OBJECT(font_button), "clicked", G_CALLBACK(pidgin_menu_clicked), font_menu);
963 G_CALLBACK(do_underline), toolbar); 1119 g_signal_connect(G_OBJECT(font_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), font_button);
964
965 toolbar->underline = button;
966 1120
967 /* Sep */ 1121 /* Sep */
968 sep = gtk_vseparator_new(); 1122 sep = gtk_vseparator_new();
969 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); 1123 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
970 1124 gtk_widget_show_all(sep);
971 /* Increase font size */ 1125
972 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_LARGER); 1126 /* Reset Formatting */
973 gtk_size_group_add_widget(sg, button); 1127 button = gtk_toggle_button_new();
1128 gtk_button_set_relief(GTK_BUTTON(button), GTK_RELIEF_NONE);
1129 bbox = gtk_hbox_new(FALSE, 3);
1130 gtk_container_add(GTK_CONTAINER(button), bbox);
1131 image = gtk_image_new_from_stock(PIDGIN_STOCK_CLEAR, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
1132 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
1133 label = gtk_label_new_with_mnemonic(_("_Reset font"));
1134 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
974 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1135 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
975 gtk_tooltips_set_tip(toolbar->tooltips, button, 1136 gtk_widget_show_all(button);
976 _("Larger font size"), NULL);
977
978 g_signal_connect(G_OBJECT(button), "clicked", 1137 g_signal_connect(G_OBJECT(button), "clicked",
979 G_CALLBACK(do_big), toolbar); 1138 G_CALLBACK(clear_formatting_cb), toolbar);
980 1139 toolbar->clear = button;
981 toolbar->larger_size = button;
982
983 /* Decrease font size */
984 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER);
985 gtk_size_group_add_widget(sg, button);
986 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
987 gtk_tooltips_set_tip(toolbar->tooltips, button,
988 _("Smaller font size"), NULL);
989
990 g_signal_connect(G_OBJECT(button), "clicked",
991 G_CALLBACK(do_small), toolbar);
992
993 toolbar->smaller_size = button;
994 1140
995 /* Sep */ 1141 /* Sep */
996 sep = gtk_vseparator_new(); 1142 sep = gtk_vseparator_new();
997 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0); 1143 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
998 1144 gtk_widget_show_all(sep);
999 /* Font Face */ 1145
1000 1146 /* Insert */
1001 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FONT_FACE); 1147 insert_button = gtk_toggle_button_new();
1002 gtk_size_group_add_widget(sg, button); 1148 gtk_button_set_relief(GTK_BUTTON(insert_button), GTK_RELIEF_NONE);
1003 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1149 bbox = gtk_hbox_new(FALSE, 3);
1004 gtk_tooltips_set_tip(toolbar->tooltips, button, 1150 gtk_container_add(GTK_CONTAINER(insert_button), bbox);
1005 _("Font face"), NULL); 1151 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL));
1006 1152 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0);
1007 g_signal_connect(G_OBJECT(button), "clicked", 1153 label = gtk_label_new_with_mnemonic(_("_Insert"));
1008 G_CALLBACK(toggle_font), toolbar); 1154 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0);
1009 1155 gtk_box_pack_start(GTK_BOX(hbox), insert_button, FALSE, FALSE, 0);
1010 toolbar->font = button; 1156 gtk_widget_show_all(insert_button);
1011 1157
1012 /* Foreground Color */ 1158 insert_menu = gtk_menu_new();
1013 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_FGCOLOR); 1159
1014 gtk_size_group_add_widget(sg, button); 1160 menuitem = gtk_menu_item_new_with_mnemonic(_("_Smiley"));
1015 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1161 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->smiley);
1016 gtk_tooltips_set_tip(toolbar->tooltips, button, 1162 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
1017 _("Foreground font color"), NULL); 1163 g_signal_connect(G_OBJECT(toolbar->smiley), "notify::sensitive",
1018 1164 G_CALLBACK(button_sensitiveness_changed), menuitem);
1019 g_signal_connect(G_OBJECT(button), "clicked", 1165
1020 G_CALLBACK(toggle_fg_color), toolbar); 1166 menuitem = gtk_menu_item_new_with_mnemonic(_("_Image"));
1021 1167 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->image);
1022 toolbar->fgcolor = button; 1168 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
1023 1169 g_signal_connect(G_OBJECT(toolbar->image), "notify::sensitive",
1024 /* Background Color */ 1170 G_CALLBACK(button_sensitiveness_changed), menuitem);
1025 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_BGCOLOR); 1171
1026 gtk_size_group_add_widget(sg, button); 1172 menuitem = gtk_menu_item_new_with_mnemonic(_("_Link"));
1027 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); 1173 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), toolbar->link);
1028 gtk_tooltips_set_tip(toolbar->tooltips, button, 1174 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem);
1029 _("Background color"), NULL); 1175 g_signal_connect(G_OBJECT(toolbar->link), "notify::sensitive",
1030 1176 G_CALLBACK(button_sensitiveness_changed), menuitem);
1031 g_signal_connect(G_OBJECT(button), "clicked", 1177
1032 G_CALLBACK(toggle_bg_color), toolbar); 1178 g_signal_connect(G_OBJECT(insert_button), "clicked", G_CALLBACK(pidgin_menu_clicked), insert_menu);
1033 1179 g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button);
1034 toolbar->bgcolor = button;
1035
1036 /* Sep */
1037 sep = gtk_vseparator_new();
1038 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
1039
1040 /* Reset Formatting */
1041 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_CLEAR);
1042 gtk_size_group_add_widget(sg, button);
1043 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1044 gtk_tooltips_set_tip(toolbar->tooltips, button,
1045 _("Reset formatting"), NULL);
1046
1047 g_signal_connect(G_OBJECT(button), "clicked",
1048 G_CALLBACK(clear_formatting_cb), toolbar);
1049
1050 toolbar->clear = button;
1051
1052 /* Sep */
1053 sep = gtk_vseparator_new();
1054 gtk_box_pack_start(GTK_BOX(hbox), sep, FALSE, FALSE, 0);
1055
1056 /* Insert Link */
1057 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_LINK);
1058 gtk_size_group_add_widget(sg, button);
1059 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1060 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert link"), NULL);
1061 g_signal_connect(G_OBJECT(button), "clicked",
1062 G_CALLBACK(insert_link_cb), toolbar);
1063
1064 toolbar->link = button;
1065
1066 /* Insert IM Image */
1067 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE);
1068 gtk_size_group_add_widget(sg, button);
1069 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1070 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert image"), NULL);
1071
1072 g_signal_connect(G_OBJECT(button), "clicked",
1073 G_CALLBACK(insert_image_cb), toolbar);
1074
1075 toolbar->image = button;
1076
1077 /* Insert Smiley */
1078 button = pidgin_pixbuf_toolbar_button_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY);
1079 gtk_size_group_add_widget(sg, button);
1080 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0);
1081 gtk_tooltips_set_tip(toolbar->tooltips, button, _("Insert smiley"), NULL);
1082
1083 g_signal_connect(G_OBJECT(button), "clicked",
1084 G_CALLBACK(insert_smiley_cb), toolbar);
1085
1086 toolbar->smiley = button;
1087
1088 toolbar->sml = NULL; 1180 toolbar->sml = NULL;
1089 gtk_widget_show_all(hbox);
1090 } 1181 }
1091 1182
1092 GtkWidget *gtk_imhtmltoolbar_new() 1183 GtkWidget *gtk_imhtmltoolbar_new()
1093 { 1184 {
1094 return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL)); 1185 return GTK_WIDGET(g_object_new(gtk_imhtmltoolbar_get_type(), NULL));

mercurial