| 1042 gtk_widget_grab_focus(toolbar->webview); |
983 gtk_widget_grab_focus(toolbar->webview); |
| 1043 #endif |
984 #endif |
| 1044 } |
985 } |
| 1045 |
986 |
| 1046 static void |
987 static void |
| 1047 send_attention_cb(GtkWidget *attention, GtkWebViewToolbar *toolbar) |
988 send_attention_cb(GtkAction *attention, GtkWebViewToolbar *toolbar) |
| 1048 { |
989 { |
| 1049 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
990 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| 1050 PurpleConversation *conv = priv->active_conv; |
991 PurpleConversation *conv = priv->active_conv; |
| 1051 const gchar *who = purple_conversation_get_name(conv); |
992 const gchar *who = purple_conversation_get_name(conv); |
| 1052 PurpleConnection *gc = purple_conversation_get_connection(conv); |
993 PurpleConnection *gc = purple_conversation_get_connection(conv); |
| 1053 |
994 |
| 1054 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(attention), FALSE, toolbar); |
|
| 1055 purple_prpl_send_attention(gc, who, 0); |
995 purple_prpl_send_attention(gc, who, 0); |
| 1056 gtk_widget_grab_focus(toolbar->webview); |
996 gtk_widget_grab_focus(toolbar->webview); |
| 1057 } |
997 } |
| 1058 |
998 |
| 1059 static void |
999 static void |
| 1060 update_buttons_cb(GtkWebView *webview, GtkWebViewButtons buttons, |
1000 update_buttons_cb(GtkWebView *webview, GtkWebViewButtons buttons, |
| 1061 GtkWebViewToolbar *toolbar) |
1001 GtkWebViewToolbar *toolbar) |
| 1062 { |
1002 { |
| 1063 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
1003 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| 1064 gtk_widget_set_sensitive(GTK_WIDGET(priv->bold), buttons & GTK_WEBVIEW_BOLD); |
1004 |
| 1065 gtk_widget_set_sensitive(GTK_WIDGET(priv->italic), buttons & GTK_WEBVIEW_ITALIC); |
1005 gtk_action_set_sensitive(priv->bold, buttons & GTK_WEBVIEW_BOLD); |
| 1066 gtk_widget_set_sensitive(GTK_WIDGET(priv->underline), buttons & GTK_WEBVIEW_UNDERLINE); |
1006 gtk_action_set_sensitive(priv->italic, buttons & GTK_WEBVIEW_ITALIC); |
| 1067 gtk_widget_set_sensitive(GTK_WIDGET(priv->strike), buttons & GTK_WEBVIEW_STRIKE); |
1007 gtk_action_set_sensitive(priv->underline, buttons & GTK_WEBVIEW_UNDERLINE); |
| 1068 |
1008 gtk_action_set_sensitive(priv->strike, buttons & GTK_WEBVIEW_STRIKE); |
| 1069 gtk_widget_set_sensitive(GTK_WIDGET(priv->larger_size), buttons & GTK_WEBVIEW_GROW); |
1009 |
| 1070 gtk_widget_set_sensitive(GTK_WIDGET(priv->smaller_size), buttons & GTK_WEBVIEW_SHRINK); |
1010 gtk_action_set_sensitive(priv->larger_size, buttons & GTK_WEBVIEW_GROW); |
| 1071 |
1011 gtk_action_set_sensitive(priv->smaller_size, buttons & GTK_WEBVIEW_SHRINK); |
| 1072 gtk_widget_set_sensitive(GTK_WIDGET(priv->font), buttons & GTK_WEBVIEW_FACE); |
1012 |
| 1073 gtk_widget_set_sensitive(GTK_WIDGET(priv->fgcolor), buttons & GTK_WEBVIEW_FORECOLOR); |
1013 gtk_action_set_sensitive(priv->font, buttons & GTK_WEBVIEW_FACE); |
| 1074 gtk_widget_set_sensitive(GTK_WIDGET(priv->bgcolor), buttons & GTK_WEBVIEW_BACKCOLOR); |
1014 gtk_action_set_sensitive(priv->fgcolor, buttons & GTK_WEBVIEW_FORECOLOR); |
| 1075 |
1015 gtk_action_set_sensitive(priv->bgcolor, buttons & GTK_WEBVIEW_BACKCOLOR); |
| 1076 gtk_widget_set_sensitive(GTK_WIDGET(priv->clear), |
1016 |
| 1077 (buttons & GTK_WEBVIEW_BOLD || |
1017 gtk_action_set_sensitive(priv->clear, |
| 1078 buttons & GTK_WEBVIEW_ITALIC || |
1018 (buttons & GTK_WEBVIEW_BOLD || |
| 1079 buttons & GTK_WEBVIEW_UNDERLINE || |
1019 buttons & GTK_WEBVIEW_ITALIC || |
| 1080 buttons & GTK_WEBVIEW_STRIKE || |
1020 buttons & GTK_WEBVIEW_UNDERLINE || |
| 1081 buttons & GTK_WEBVIEW_GROW || |
1021 buttons & GTK_WEBVIEW_STRIKE || |
| 1082 buttons & GTK_WEBVIEW_SHRINK || |
1022 buttons & GTK_WEBVIEW_GROW || |
| 1083 buttons & GTK_WEBVIEW_FACE || |
1023 buttons & GTK_WEBVIEW_SHRINK || |
| 1084 buttons & GTK_WEBVIEW_FORECOLOR || |
1024 buttons & GTK_WEBVIEW_FACE || |
| 1085 buttons & GTK_WEBVIEW_BACKCOLOR)); |
1025 buttons & GTK_WEBVIEW_FORECOLOR || |
| 1086 |
1026 buttons & GTK_WEBVIEW_BACKCOLOR)); |
| 1087 gtk_widget_set_sensitive(GTK_WIDGET(priv->image), buttons & GTK_WEBVIEW_IMAGE); |
1027 |
| 1088 gtk_widget_set_sensitive(GTK_WIDGET(priv->link), buttons & GTK_WEBVIEW_LINK); |
1028 gtk_action_set_sensitive(priv->image, buttons & GTK_WEBVIEW_IMAGE); |
| 1089 gtk_widget_set_sensitive(GTK_WIDGET(priv->smiley), buttons & GTK_WEBVIEW_SMILEY); |
1029 gtk_action_set_sensitive(priv->link, buttons & GTK_WEBVIEW_LINK); |
| |
1030 gtk_action_set_sensitive(priv->smiley, buttons & GTK_WEBVIEW_SMILEY); |
| 1090 } |
1031 } |
| 1091 |
1032 |
| 1092 /* we call this when we want to _set_active the toggle button, it'll |
1033 /* we call this when we want to _set_active the toggle button, it'll |
| 1093 * block the callback thats connected to the button so we don't have to |
1034 * block the callback that's connected to the button so we don't have to |
| 1094 * do the double toggling hack |
1035 * do the double toggling hack |
| 1095 */ |
1036 */ |
| 1096 static void |
1037 static void |
| 1097 toggle_button_set_active_block(GtkToggleButton *button, gboolean is_active, |
1038 toggle_action_set_active_block(GtkToggleAction *action, gboolean is_active, |
| 1098 GtkWebViewToolbar *toolbar) |
1039 GtkWebViewToolbar *toolbar) |
| 1099 { |
1040 { |
| 1100 GObject *object; |
1041 GObject *object; |
| 1101 g_return_if_fail(toolbar); |
1042 g_return_if_fail(toolbar); |
| 1102 |
1043 |
| 1103 object = g_object_ref(button); |
1044 object = g_object_ref(action); |
| 1104 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, |
1045 g_signal_handlers_block_matched(object, G_SIGNAL_MATCH_DATA, |
| 1105 0, 0, NULL, NULL, toolbar); |
1046 0, 0, NULL, NULL, toolbar); |
| 1106 gtk_toggle_button_set_active(button, is_active); |
1047 gtk_toggle_action_set_active(action, is_active); |
| 1107 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, |
1048 g_signal_handlers_unblock_matched(object, G_SIGNAL_MATCH_DATA, |
| 1108 0, 0, NULL, NULL, toolbar); |
1049 0, 0, NULL, NULL, toolbar); |
| 1109 g_object_unref(object); |
1050 g_object_unref(object); |
| 1110 } |
1051 } |
| 1111 |
1052 |
| 1112 static void |
1053 static void |
| 1113 update_buttons(GtkWebViewToolbar *toolbar) |
1054 update_buttons(GtkWebViewToolbar *toolbar) |
| 1114 { |
1055 { |
| 1115 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
1056 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| 1116 gboolean bold, italic, underline, strike; |
1057 gboolean bold, italic, underline, strike; |
| 1117 char *tmp; |
1058 char *tmp; |
| 1118 GtkLabel *label = GTK_LABEL(priv->font_label); |
1059 char *label; |
| 1119 |
1060 |
| 1120 gtk_label_set_label(label, _("_Font")); |
1061 label = g_strdup(_("_Font")); |
| 1121 |
1062 |
| 1122 gtk_webview_get_current_format(GTK_WEBVIEW(toolbar->webview), |
1063 gtk_webview_get_current_format(GTK_WEBVIEW(toolbar->webview), |
| 1123 &bold, &italic, &underline, &strike); |
1064 &bold, &italic, &underline, &strike); |
| 1124 |
1065 |
| 1125 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->bold)) != bold) |
1066 if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(priv->bold)) != bold) |
| 1126 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->bold), bold, |
1067 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->bold), bold, |
| 1127 toolbar); |
1068 toolbar); |
| 1128 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->italic)) != italic) |
1069 if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(priv->italic)) != italic) |
| 1129 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->italic), italic, |
1070 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->italic), italic, |
| 1130 toolbar); |
1071 toolbar); |
| 1131 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->underline)) != underline) |
1072 if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(priv->underline)) != underline) |
| 1132 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->underline), |
1073 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->underline), |
| 1133 underline, toolbar); |
1074 underline, toolbar); |
| 1134 if (gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(priv->strike)) != strike) |
1075 if (gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(priv->strike)) != strike) |
| 1135 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->strike), |
1076 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->strike), strike, |
| 1136 strike, toolbar); |
1077 toolbar); |
| 1137 |
|
| 1138 /* These buttons aren't ever "active". */ |
|
| 1139 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->smaller_size), FALSE); |
|
| 1140 gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(priv->larger_size), FALSE); |
|
| 1141 |
1078 |
| 1142 if (bold) { |
1079 if (bold) { |
| 1143 gchar *markup = g_strdup_printf("<b>%s</b>", |
1080 gchar *markup = g_strdup_printf("<b>%s</b>", label); |
| 1144 gtk_label_get_label(label)); |
1081 g_free(label); |
| 1145 gtk_label_set_markup_with_mnemonic(label, markup); |
1082 label = markup; |
| 1146 g_free(markup); |
|
| 1147 } |
1083 } |
| 1148 if (italic) { |
1084 if (italic) { |
| 1149 gchar *markup = g_strdup_printf("<i>%s</i>", |
1085 gchar *markup = g_strdup_printf("<i>%s</i>", label); |
| 1150 gtk_label_get_label(label)); |
1086 g_free(label); |
| 1151 gtk_label_set_markup_with_mnemonic(label, markup); |
1087 label = markup; |
| 1152 g_free(markup); |
|
| 1153 } |
1088 } |
| 1154 if (underline) { |
1089 if (underline) { |
| 1155 gchar *markup = g_strdup_printf("<u>%s</u>", |
1090 gchar *markup = g_strdup_printf("<u>%s</u>", label); |
| 1156 gtk_label_get_label(label)); |
1091 g_free(label); |
| 1157 gtk_label_set_markup_with_mnemonic(label, markup); |
1092 label = markup; |
| 1158 g_free(markup); |
|
| 1159 } |
1093 } |
| 1160 if (strike) { |
1094 if (strike) { |
| 1161 gchar *markup = g_strdup_printf("<s>%s</s>", |
1095 gchar *markup = g_strdup_printf("<s>%s</s>", label); |
| 1162 gtk_label_get_label(label)); |
1096 g_free(label); |
| 1163 gtk_label_set_markup_with_mnemonic(label, markup); |
1097 label = markup; |
| 1164 g_free(markup); |
|
| 1165 } |
1098 } |
| 1166 |
1099 |
| 1167 tmp = gtk_webview_get_current_fontface(GTK_WEBVIEW(toolbar->webview)); |
1100 tmp = gtk_webview_get_current_fontface(GTK_WEBVIEW(toolbar->webview)); |
| 1168 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->font), |
1101 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->font), |
| 1169 (tmp != NULL), toolbar); |
1102 (tmp && *tmp), toolbar); |
| 1170 if (tmp != NULL) { |
1103 if (tmp && *tmp) { |
| 1171 gchar *markup = g_strdup_printf("<span font_desc=\"%s\">%s</span>", |
1104 gchar *markup = g_strdup_printf("<span font_desc=\"%s\">%s</span>", |
| 1172 tmp, gtk_label_get_label(label)); |
1105 tmp, label); |
| 1173 gtk_label_set_markup_with_mnemonic(label, markup); |
1106 g_free(label); |
| 1174 g_free(markup); |
1107 label = markup; |
| 1175 } |
1108 } |
| 1176 g_free(tmp); |
1109 g_free(tmp); |
| 1177 |
1110 |
| 1178 tmp = gtk_webview_get_current_forecolor(GTK_WEBVIEW(toolbar->webview)); |
1111 tmp = gtk_webview_get_current_forecolor(GTK_WEBVIEW(toolbar->webview)); |
| 1179 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->fgcolor), |
1112 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->fgcolor), |
| 1180 (tmp != NULL), toolbar); |
1113 (tmp && *tmp), toolbar); |
| 1181 if (tmp != NULL) { |
1114 if (tmp && *tmp) { |
| 1182 gchar *markup = g_strdup_printf("<span foreground=\"%s\">%s</span>", |
1115 gchar *markup = g_strdup_printf("<span foreground=\"%s\">%s</span>", |
| 1183 tmp, gtk_label_get_label(label)); |
1116 tmp, label); |
| 1184 gtk_label_set_markup_with_mnemonic(label, markup); |
1117 g_free(label); |
| 1185 g_free(markup); |
1118 label = markup; |
| 1186 } |
1119 } |
| 1187 g_free(tmp); |
1120 g_free(tmp); |
| 1188 |
1121 |
| 1189 tmp = gtk_webview_get_current_backcolor(GTK_WEBVIEW(toolbar->webview)); |
1122 tmp = gtk_webview_get_current_backcolor(GTK_WEBVIEW(toolbar->webview)); |
| 1190 toggle_button_set_active_block(GTK_TOGGLE_BUTTON(priv->bgcolor), |
1123 toggle_action_set_active_block(GTK_TOGGLE_ACTION(priv->bgcolor), |
| 1191 (tmp != NULL), toolbar); |
1124 (tmp && *tmp), toolbar); |
| 1192 if (tmp != NULL) { |
1125 if (tmp && *tmp) { |
| 1193 gchar *markup = g_strdup_printf("<span background=\"%s\">%s</span>", |
1126 gchar *markup = g_strdup_printf("<span background=\"%s\">%s</span>", |
| 1194 tmp, gtk_label_get_label(label)); |
1127 tmp, label); |
| 1195 gtk_label_set_markup_with_mnemonic(label, markup); |
1128 g_free(label); |
| 1196 g_free(markup); |
1129 label = markup; |
| 1197 } |
1130 } |
| 1198 g_free(tmp); |
1131 g_free(tmp); |
| |
1132 |
| |
1133 gtk_label_set_markup_with_mnemonic(GTK_LABEL(priv->font_label), label); |
| 1199 } |
1134 } |
| 1200 |
1135 |
| 1201 static void |
1136 static void |
| 1202 toggle_button_cb(GtkWebView *webview, GtkWebViewButtons buttons, |
1137 toggle_button_cb(GtkWebView *webview, GtkWebViewButtons buttons, |
| 1203 GtkWebViewToolbar *toolbar) |
1138 GtkWebViewToolbar *toolbar) |
| 1419 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations/toolbar"); |
1315 purple_prefs_add_none(PIDGIN_PREFS_ROOT "/conversations/toolbar"); |
| 1420 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", FALSE); |
1316 purple_prefs_add_bool(PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", FALSE); |
| 1421 } |
1317 } |
| 1422 |
1318 |
| 1423 static void |
1319 static void |
| 1424 gtk_webviewtoolbar_create_old_buttons(GtkWebViewToolbar *toolbar) |
1320 gtk_webviewtoolbar_create_actions(GtkWebViewToolbar *toolbar) |
| 1425 { |
1321 { |
| 1426 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
1322 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| 1427 GtkWidget *hbox; |
1323 GtkActionGroup *action_group; |
| 1428 GtkWidget *button; |
1324 int i; |
| 1429 struct { |
1325 struct { |
| |
1326 GtkAction **action; |
| |
1327 char *name; |
| 1430 char *stock; |
1328 char *stock; |
| 1431 gpointer callback; |
1329 char *label; |
| 1432 GtkWidget **button; |
1330 char *tooltip; |
| 1433 const char *tooltip; |
1331 void (*cb)(); |
| 1434 } buttons[] = { |
1332 gboolean toggle; |
| 1435 {GTK_STOCK_BOLD, G_CALLBACK(do_bold), &priv->bold, _("Bold")}, |
1333 } actions[] = { |
| 1436 {GTK_STOCK_ITALIC, do_italic, &priv->italic, _("Italic")}, |
1334 {&priv->bold, "ToggleBold", GTK_STOCK_BOLD, N_("<b>_Bold</b>"), N_("Bold"), do_bold, TRUE}, |
| 1437 {GTK_STOCK_UNDERLINE, do_underline, &priv->underline, _("Underline")}, |
1335 {&priv->italic, "ToggleItalic", GTK_STOCK_ITALIC, N_("<i>_Italic</i>"), N_("Italic"), do_italic, TRUE}, |
| 1438 {GTK_STOCK_STRIKETHROUGH, do_strikethrough, &priv->strike, _("Strikethrough")}, |
1336 {&priv->underline, "ToggleUnderline", GTK_STOCK_UNDERLINE, N_("<u>_Underline</u>"), N_("Underline"), do_underline, TRUE}, |
| 1439 {"", NULL, NULL, NULL}, |
1337 {&priv->strike, "ToggleStrike", GTK_STOCK_STRIKETHROUGH, N_("<span strikethrough='true'>Strikethrough</span>"), N_("Strikethrough"), do_strikethrough, TRUE}, |
| 1440 {PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, do_big, &priv->larger_size, _("Increase Font Size")}, |
1338 {&priv->larger_size, "ToggleLarger", PIDGIN_STOCK_TOOLBAR_TEXT_LARGER, N_("<span size='larger'>Larger</span>"), N_("Increase Font Size"), do_big, FALSE}, |
| 1441 {PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, do_small, &priv->smaller_size, _("Decrease Font Size")}, |
1339 #if 0 |
| 1442 {"", NULL, NULL, NULL}, |
1340 {&priv->normal_size, "ToggleNormal", NULL, N_("Normal"), N_("Normal Font Size"), NULL, FALSE}, |
| 1443 {PIDGIN_STOCK_TOOLBAR_FONT_FACE, toggle_font, &priv->font, _("Font Face")}, |
1341 #endif |
| 1444 {PIDGIN_STOCK_TOOLBAR_FGCOLOR, toggle_fg_color, &priv->fgcolor, _("Foreground Color")}, |
1342 {&priv->smaller_size, "ToggleSmaller", PIDGIN_STOCK_TOOLBAR_TEXT_SMALLER, N_("<span size='smaller'>Smaller</span>"), N_("Decrease Font Size"), do_small, FALSE}, |
| 1445 {PIDGIN_STOCK_TOOLBAR_BGCOLOR, toggle_bg_color, &priv->bgcolor, _("Background Color")}, |
1343 {&priv->font, "ToggleFontFace", PIDGIN_STOCK_TOOLBAR_FONT_FACE, N_("_Font face"), N_("Font Face"), toggle_font, TRUE}, |
| 1446 {"", NULL, NULL, NULL}, |
1344 {&priv->fgcolor, "ToggleFG", PIDGIN_STOCK_TOOLBAR_FGCOLOR, N_("Foreground _color"), N_("Foreground Color"), toggle_fg_color, TRUE}, |
| 1447 {PIDGIN_STOCK_CLEAR, clear_formatting_cb, &priv->clear, _("Reset Formatting")}, |
1345 {&priv->bgcolor, "ToggleBG", PIDGIN_STOCK_TOOLBAR_BGCOLOR, N_("Bac_kground color"), N_("Background Color"), toggle_bg_color, TRUE}, |
| 1448 {"", NULL, NULL, NULL}, |
1346 {&priv->clear, "ResetFormat", PIDGIN_STOCK_CLEAR, N_("_Reset formatting"), N_("Reset Formatting"), clear_formatting_cb, FALSE}, |
| 1449 {PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, insert_image_cb, &priv->image, _("Insert IM Image")}, |
1347 {&priv->image, "InsertImage", PIDGIN_STOCK_TOOLBAR_INSERT_IMAGE, N_("_Image"), N_("Insert IM Image"), insert_image_cb, FALSE}, |
| 1450 {PIDGIN_STOCK_TOOLBAR_INSERT_LINK, insert_link_cb, &priv->link, _("Insert Link")}, |
1348 {&priv->link, "InsertLink", PIDGIN_STOCK_TOOLBAR_INSERT_LINK, N_("_Link"), N_("Insert Link"), insert_link_cb, TRUE}, |
| 1451 {"", NULL, NULL, NULL}, |
1349 {&priv->hr, "InsertHR", NULL, N_("_Horizontal rule"), N_("Insert Horizontal rule"), insert_hr_cb, FALSE}, |
| 1452 {PIDGIN_STOCK_TOOLBAR_SMILEY, insert_smiley_cb, &priv->smiley, _("Insert Smiley")}, |
1350 {&priv->smiley, "InsertSmiley", PIDGIN_STOCK_TOOLBAR_SMILEY, N_("_Smile!"), N_("Insert Smiley"), insert_smiley_cb, FALSE}, |
| 1453 {PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION, send_attention_cb, &priv->attention, _("Send Attention")}, |
1351 {&priv->attention, "SendAttention", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION, N_("_Attention!"), N_("Send Attention"), send_attention_cb, FALSE}, |
| 1454 {NULL, NULL, NULL, NULL} |
|
| 1455 }; |
1352 }; |
| 1456 int iter; |
1353 |
| 1457 |
1354 action_group = gtk_action_group_new("GtkWebViewToolbar"); |
| 1458 hbox = gtk_hbox_new(FALSE, 0); |
1355 #ifdef ENABLE_NLS |
| 1459 |
1356 gtk_action_group_set_translation_domain(action_group, PACKAGE); |
| 1460 for (iter = 0; buttons[iter].stock; iter++) { |
1357 #endif |
| 1461 if (buttons[iter].stock[0]) { |
1358 |
| 1462 button = pidgin_pixbuf_toolbar_button_from_stock(buttons[iter].stock); |
1359 for (i = 0; i < G_N_ELEMENTS(actions); i++) { |
| 1463 g_signal_connect(G_OBJECT(button), "button-press-event", G_CALLBACK(gtk_webviewtoolbar_popup_menu), toolbar); |
1360 GtkAction *action; |
| 1464 g_signal_connect(G_OBJECT(button), "clicked", |
1361 if (actions[i].toggle) |
| 1465 G_CALLBACK(buttons[iter].callback), toolbar); |
1362 action = GTK_ACTION(gtk_toggle_action_new(actions[i].name, |
| 1466 *(buttons[iter].button) = button; |
1363 actions[i].label, |
| 1467 gtk_widget_set_tooltip_text(button, buttons[iter].tooltip); |
1364 actions[i].tooltip, |
| 1468 } else |
1365 actions[i].stock)); |
| 1469 button = gtk_vseparator_new(); |
1366 else |
| 1470 gtk_box_pack_start(GTK_BOX(hbox), button, FALSE, FALSE, 0); |
1367 action = gtk_action_new(actions[i].name, actions[i].label, |
| 1471 } |
1368 actions[i].tooltip, actions[i].stock); |
| 1472 |
1369 gtk_action_set_is_important(action, TRUE); |
| 1473 gtk_box_pack_start(GTK_BOX(toolbar), hbox, FALSE, FALSE, 0); |
1370 gtk_action_group_add_action(action_group, action); |
| 1474 priv->wide_view = hbox; |
1371 g_signal_connect(G_OBJECT(action), "activate", actions[i].cb, toolbar); |
| 1475 } |
1372 *(actions[i].action) = action; |
| 1476 |
1373 } |
| 1477 static void |
1374 } |
| 1478 gtk_webviewtoolbar_init(GtkWebViewToolbar *toolbar) |
1375 |
| 1479 { |
1376 static void |
| 1480 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
1377 gtk_webviewtoolbar_create_wide_view(GtkWebViewToolbar *toolbar) |
| 1481 GtkWidget *hbox = GTK_WIDGET(toolbar), *event = gtk_event_box_new(); |
1378 { |
| 1482 GtkWidget *bbox, *box = gtk_hbox_new(FALSE, 0); |
1379 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| 1483 GtkWidget *image; |
1380 GtkAction *layout[] = { |
| |
1381 priv->bold, |
| |
1382 priv->italic, |
| |
1383 priv->underline, |
| |
1384 priv->strike, |
| |
1385 NULL, |
| |
1386 priv->larger_size, |
| |
1387 #if 0 |
| |
1388 priv->normal_size, |
| |
1389 #endif |
| |
1390 priv->smaller_size, |
| |
1391 NULL, |
| |
1392 priv->font, |
| |
1393 priv->fgcolor, |
| |
1394 priv->bgcolor, |
| |
1395 NULL, |
| |
1396 priv->clear, |
| |
1397 NULL, |
| |
1398 priv->image, |
| |
1399 priv->link, |
| |
1400 NULL, |
| |
1401 priv->smiley, |
| |
1402 priv->attention |
| |
1403 }; |
| |
1404 int i; |
| |
1405 GtkToolItem *item; |
| |
1406 |
| |
1407 priv->wide_view = gtk_toolbar_new(); |
| |
1408 gtk_toolbar_set_icon_size(GTK_TOOLBAR(priv->wide_view), |
| |
1409 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
| |
1410 gtk_toolbar_set_style(GTK_TOOLBAR(priv->wide_view), GTK_TOOLBAR_ICONS); |
| |
1411 |
| |
1412 for (i = 0; i < G_N_ELEMENTS(layout); i++) { |
| |
1413 if (layout[i]) |
| |
1414 item = GTK_TOOL_ITEM(gtk_action_create_tool_item(layout[i])); |
| |
1415 else |
| |
1416 item = gtk_separator_tool_item_new(); |
| |
1417 gtk_toolbar_insert(GTK_TOOLBAR(priv->wide_view), item, -1); |
| |
1418 } |
| |
1419 } |
| |
1420 |
| |
1421 static void |
| |
1422 gtk_webviewtoolbar_create_lean_view(GtkWebViewToolbar *toolbar) |
| |
1423 { |
| |
1424 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| 1484 GtkWidget *label; |
1425 GtkWidget *label; |
| 1485 GtkWidget *insert_button; |
1426 GtkWidget *menuitem; |
| 1486 GtkWidget *font_button; |
1427 GtkToolItem *sep; |
| |
1428 GtkToolItem *font_button; |
| |
1429 GtkWidget *font_menu; |
| |
1430 GtkToolItem *insert_button; |
| |
1431 GtkWidget *insert_menu; |
| 1487 GtkWidget *smiley_button; |
1432 GtkWidget *smiley_button; |
| 1488 GtkWidget *attention_button; |
1433 GtkWidget *attention_button; |
| 1489 GtkWidget *font_menu; |
1434 |
| 1490 GtkWidget *insert_menu; |
1435 priv->lean_view = gtk_toolbar_new(); |
| 1491 GtkWidget *menuitem; |
1436 gtk_toolbar_set_icon_size(GTK_TOOLBAR(priv->lean_view), |
| 1492 GtkWidget *sep; |
1437 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
| 1493 int i; |
1438 gtk_toolbar_set_style(GTK_TOOLBAR(priv->lean_view), GTK_TOOLBAR_BOTH_HORIZ); |
| 1494 struct { |
1439 |
| 1495 const char *label; |
1440 #define ADD_MENU_ITEM(menu, item) \ |
| 1496 GtkWidget **button; |
1441 menuitem = gtk_action_create_menu_item((item)); \ |
| 1497 gboolean check; |
1442 gtk_menu_shell_append(GTK_MENU_SHELL((menu)), menuitem); |
| 1498 } buttons[] = { |
|
| 1499 {_("<b>_Bold</b>"), &priv->bold, TRUE}, |
|
| 1500 {_("<i>_Italic</i>"), &priv->italic, TRUE}, |
|
| 1501 {_("<u>_Underline</u>"), &priv->underline, TRUE}, |
|
| 1502 {_("<span strikethrough='true'>Strikethrough</span>"), &priv->strike, TRUE}, |
|
| 1503 {_("<span size='larger'>_Larger</span>"), &priv->larger_size, TRUE}, |
|
| 1504 #if 0 |
|
| 1505 {_("_Normal"), &priv->normal_size, TRUE}, |
|
| 1506 #endif |
|
| 1507 {_("<span size='smaller'>_Smaller</span>"), &priv->smaller_size, TRUE}, |
|
| 1508 /* If we want to show the formatting for the following items, we would |
|
| 1509 * need to update them when formatting changes. The above items don't need |
|
| 1510 * no updating nor nothin' */ |
|
| 1511 {_("_Font face"), &priv->font, TRUE}, |
|
| 1512 {_("Foreground _color"), &priv->fgcolor, TRUE}, |
|
| 1513 {_("Bac_kground color"), &priv->bgcolor, TRUE}, |
|
| 1514 {_("_Reset formatting"), &priv->clear, FALSE}, |
|
| 1515 {NULL, NULL, FALSE} |
|
| 1516 }; |
|
| 1517 |
|
| 1518 toolbar->webview = NULL; |
|
| 1519 priv->font_dialog = NULL; |
|
| 1520 priv->fgcolor_dialog = NULL; |
|
| 1521 priv->bgcolor_dialog = NULL; |
|
| 1522 priv->link_dialog = NULL; |
|
| 1523 priv->smiley_dialog = NULL; |
|
| 1524 priv->image_dialog = NULL; |
|
| 1525 |
|
| 1526 #if !GTK_CHECK_VERSION(2,12,0) |
|
| 1527 priv->tooltips = gtk_tooltips_new(); |
|
| 1528 #endif |
|
| 1529 |
|
| 1530 gtk_box_set_spacing(GTK_BOX(toolbar), 3); |
|
| 1531 |
|
| 1532 gtk_webviewtoolbar_create_old_buttons(toolbar); |
|
| 1533 |
1443 |
| 1534 /* Fonts */ |
1444 /* Fonts */ |
| 1535 font_button = gtk_toggle_button_new(); |
1445 font_button = gtk_toggle_tool_button_new(); |
| 1536 gtk_button_set_relief(GTK_BUTTON(font_button), GTK_RELIEF_NONE); |
1446 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), font_button, -1); |
| 1537 bbox = gtk_hbox_new(FALSE, 3); |
1447 gtk_tool_item_set_is_important(font_button, TRUE); |
| 1538 gtk_container_add(GTK_CONTAINER(font_button), bbox); |
1448 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(font_button), GTK_STOCK_BOLD); |
| 1539 image = gtk_image_new_from_stock(GTK_STOCK_BOLD, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
|
| 1540 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
|
| 1541 priv->font_label = label = gtk_label_new_with_mnemonic(_("_Font")); |
1449 priv->font_label = label = gtk_label_new_with_mnemonic(_("_Font")); |
| 1542 gtk_label_set_use_markup(GTK_LABEL(label), TRUE); |
1450 gtk_label_set_use_markup(GTK_LABEL(label), TRUE); |
| 1543 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
1451 gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(font_button), label); |
| 1544 gtk_box_pack_start(GTK_BOX(box), font_button, FALSE, FALSE, 0); |
|
| 1545 gtk_widget_show_all(font_button); |
|
| 1546 |
1452 |
| 1547 priv->font_menu = font_menu = gtk_menu_new(); |
1453 priv->font_menu = font_menu = gtk_menu_new(); |
| 1548 |
1454 |
| 1549 for (i = 0; buttons[i].label; i++) { |
1455 ADD_MENU_ITEM(font_menu, priv->bold); |
| 1550 GtkWidget *old = *buttons[i].button; |
1456 ADD_MENU_ITEM(font_menu, priv->italic); |
| 1551 if (buttons[i].check) { |
1457 ADD_MENU_ITEM(font_menu, priv->underline); |
| 1552 menuitem = gtk_check_menu_item_new_with_mnemonic(buttons[i].label); |
1458 ADD_MENU_ITEM(font_menu, priv->strike); |
| 1553 g_signal_connect_after(G_OBJECT(old), "toggled", |
1459 ADD_MENU_ITEM(font_menu, priv->larger_size); |
| 1554 G_CALLBACK(update_menuitem), menuitem); |
1460 #if 0 |
| 1555 } else { |
1461 ADD_MENU_ITEM(font_menu, priv->normal_size); |
| 1556 menuitem = gtk_menu_item_new_with_mnemonic(buttons[i].label); |
1462 #endif |
| 1557 } |
1463 ADD_MENU_ITEM(font_menu, priv->smaller_size); |
| 1558 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", |
1464 ADD_MENU_ITEM(font_menu, priv->font); |
| 1559 G_CALLBACK(gtk_button_clicked), old); |
1465 ADD_MENU_ITEM(font_menu, priv->fgcolor); |
| 1560 gtk_menu_shell_append(GTK_MENU_SHELL(font_menu), menuitem); |
1466 ADD_MENU_ITEM(font_menu, priv->bgcolor); |
| 1561 g_signal_connect(G_OBJECT(old), "notify::sensitive", |
1467 ADD_MENU_ITEM(font_menu, priv->clear); |
| 1562 G_CALLBACK(button_sensitiveness_changed), menuitem); |
1468 |
| 1563 g_signal_connect(G_OBJECT(old), "notify::visible", |
1469 g_signal_connect(G_OBJECT(font_button), "toggled", |
| 1564 G_CALLBACK(button_visibility_changed), menuitem); |
1470 G_CALLBACK(pidgin_menu_clicked), font_menu); |
| 1565 gtk_container_foreach(GTK_CONTAINER(menuitem), (GtkCallback)enable_markup, NULL); |
1471 g_signal_connect(G_OBJECT(font_menu), "deactivate", |
| 1566 } |
1472 G_CALLBACK(pidgin_menu_deactivate), font_button); |
| 1567 |
1473 |
| 1568 g_signal_connect(G_OBJECT(font_button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); |
1474 gtk_container_foreach(GTK_CONTAINER(font_menu), enable_markup, NULL); |
| 1569 g_signal_connect(G_OBJECT(font_button), "activate", G_CALLBACK(pidgin_menu_clicked), font_menu); |
|
| 1570 g_signal_connect(G_OBJECT(font_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), font_button); |
|
| 1571 |
1475 |
| 1572 /* Sep */ |
1476 /* Sep */ |
| 1573 sep = gtk_vseparator_new(); |
1477 sep = gtk_separator_tool_item_new(); |
| 1574 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0); |
1478 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1); |
| 1575 gtk_widget_show_all(sep); |
|
| 1576 |
1479 |
| 1577 /* Insert */ |
1480 /* Insert */ |
| 1578 insert_button = gtk_toggle_button_new(); |
1481 insert_button = gtk_toggle_tool_button_new(); |
| 1579 gtk_button_set_relief(GTK_BUTTON(insert_button), GTK_RELIEF_NONE); |
1482 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), insert_button, -1); |
| 1580 bbox = gtk_hbox_new(FALSE, 3); |
1483 gtk_tool_item_set_is_important(insert_button, TRUE); |
| 1581 gtk_container_add(GTK_CONTAINER(insert_button), bbox); |
1484 gtk_tool_button_set_stock_id(GTK_TOOL_BUTTON(insert_button), |
| 1582 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
1485 PIDGIN_STOCK_TOOLBAR_INSERT); |
| 1583 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
|
| 1584 label = gtk_label_new_with_mnemonic(_("_Insert")); |
1486 label = gtk_label_new_with_mnemonic(_("_Insert")); |
| 1585 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
1487 gtk_tool_button_set_label_widget(GTK_TOOL_BUTTON(insert_button), label); |
| 1586 gtk_box_pack_start(GTK_BOX(box), insert_button, FALSE, FALSE, 0); |
|
| 1587 gtk_widget_show_all(insert_button); |
|
| 1588 |
1488 |
| 1589 priv->insert_menu = insert_menu = gtk_menu_new(); |
1489 priv->insert_menu = insert_menu = gtk_menu_new(); |
| 1590 |
1490 |
| 1591 menuitem = gtk_menu_item_new_with_mnemonic(_("_Image")); |
1491 ADD_MENU_ITEM(insert_menu, priv->image); |
| 1592 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), priv->image); |
1492 ADD_MENU_ITEM(insert_menu, priv->link); |
| 1593 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); |
1493 ADD_MENU_ITEM(insert_menu, priv->hr); |
| 1594 g_signal_connect(G_OBJECT(priv->image), "notify::sensitive", |
1494 |
| 1595 G_CALLBACK(button_sensitiveness_changed), menuitem); |
1495 g_signal_connect(G_OBJECT(insert_button), "toggled", |
| 1596 g_signal_connect(G_OBJECT(priv->image), "notify::visible", |
1496 G_CALLBACK(pidgin_menu_clicked), insert_menu); |
| 1597 G_CALLBACK(button_visibility_changed), menuitem); |
1497 g_signal_connect(G_OBJECT(insert_menu), "deactivate", |
| 1598 |
1498 G_CALLBACK(pidgin_menu_deactivate), insert_button); |
| 1599 menuitem = gtk_menu_item_new_with_mnemonic(_("_Link")); |
1499 |
| 1600 g_signal_connect_swapped(G_OBJECT(menuitem), "activate", G_CALLBACK(gtk_button_clicked), priv->link); |
1500 /* Sep */ |
| 1601 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); |
1501 sep = gtk_separator_tool_item_new(); |
| 1602 g_signal_connect(G_OBJECT(priv->link), "notify::sensitive", |
1502 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1); |
| 1603 G_CALLBACK(button_sensitiveness_changed), menuitem); |
1503 |
| 1604 g_signal_connect(G_OBJECT(priv->link), "notify::visible", |
1504 /* Smiley */ |
| 1605 G_CALLBACK(button_visibility_changed), menuitem); |
1505 smiley_button = gtk_action_create_tool_item(priv->smiley); |
| 1606 |
1506 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), |
| 1607 menuitem = gtk_menu_item_new_with_mnemonic(_("_Horizontal rule")); |
1507 GTK_TOOL_ITEM(smiley_button), -1); |
| 1608 g_signal_connect(G_OBJECT(menuitem), "activate" , G_CALLBACK(insert_hr_cb), toolbar); |
1508 |
| 1609 gtk_menu_shell_append(GTK_MENU_SHELL(insert_menu), menuitem); |
1509 /* Sep */ |
| 1610 priv->insert_hr = menuitem; |
1510 sep = gtk_separator_tool_item_new(); |
| 1611 |
1511 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), sep, -1); |
| 1612 g_signal_connect(G_OBJECT(insert_button), "button-press-event", G_CALLBACK(button_activate_on_click), toolbar); |
1512 |
| 1613 g_signal_connect(G_OBJECT(insert_button), "activate", G_CALLBACK(pidgin_menu_clicked), insert_menu); |
1513 /* Attention */ |
| 1614 g_signal_connect(G_OBJECT(insert_menu), "deactivate", G_CALLBACK(pidgin_menu_deactivate), insert_button); |
1514 attention_button = gtk_action_create_tool_item(priv->attention); |
| |
1515 gtk_toolbar_insert(GTK_TOOLBAR(priv->lean_view), |
| |
1516 GTK_TOOL_ITEM(attention_button), -1); |
| |
1517 |
| |
1518 #undef ADD_MENU_ITEM |
| |
1519 } |
| |
1520 |
| |
1521 static void |
| |
1522 gtk_webviewtoolbar_init(GtkWebViewToolbar *toolbar) |
| |
1523 { |
| |
1524 GtkWebViewToolbarPriv *priv = GTK_WEBVIEWTOOLBAR_GET_PRIVATE(toolbar); |
| |
1525 GtkWidget *hbox = GTK_WIDGET(toolbar); |
| |
1526 |
| |
1527 gtk_webviewtoolbar_create_actions(toolbar); |
| |
1528 gtk_webviewtoolbar_create_wide_view(toolbar); |
| |
1529 gtk_webviewtoolbar_create_lean_view(toolbar); |
| |
1530 |
| |
1531 gtk_box_pack_start(GTK_BOX(hbox), priv->wide_view, TRUE, TRUE, 0); |
| |
1532 gtk_box_pack_start(GTK_BOX(hbox), priv->lean_view, TRUE, TRUE, 0); |
| |
1533 |
| 1615 priv->sml = NULL; |
1534 priv->sml = NULL; |
| 1616 |
1535 |
| 1617 /* Sep */ |
|
| 1618 sep = gtk_vseparator_new(); |
|
| 1619 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0); |
|
| 1620 gtk_widget_show_all(sep); |
|
| 1621 |
|
| 1622 /* Smiley */ |
|
| 1623 smiley_button = gtk_button_new(); |
|
| 1624 gtk_button_set_relief(GTK_BUTTON(smiley_button), GTK_RELIEF_NONE); |
|
| 1625 bbox = gtk_hbox_new(FALSE, 3); |
|
| 1626 gtk_container_add(GTK_CONTAINER(smiley_button), bbox); |
|
| 1627 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY, gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
|
| 1628 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
|
| 1629 label = gtk_label_new_with_mnemonic(_("_Smile!")); |
|
| 1630 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
|
| 1631 gtk_box_pack_start(GTK_BOX(box), smiley_button, FALSE, FALSE, 0); |
|
| 1632 g_signal_connect(G_OBJECT(smiley_button), "button-press-event", G_CALLBACK(gtk_webviewtoolbar_popup_menu), toolbar); |
|
| 1633 g_signal_connect_swapped(G_OBJECT(smiley_button), "clicked", G_CALLBACK(gtk_button_clicked), priv->smiley); |
|
| 1634 gtk_widget_show_all(smiley_button); |
|
| 1635 |
|
| 1636 /* Sep */ |
|
| 1637 sep = gtk_vseparator_new(); |
|
| 1638 gtk_box_pack_start(GTK_BOX(box), sep, FALSE, FALSE, 0); |
|
| 1639 gtk_widget_show_all(sep); |
|
| 1640 |
|
| 1641 /* Attention */ |
|
| 1642 attention_button = gtk_button_new(); |
|
| 1643 gtk_button_set_relief(GTK_BUTTON(attention_button), GTK_RELIEF_NONE); |
|
| 1644 bbox = gtk_hbox_new(FALSE, 3); |
|
| 1645 gtk_container_add(GTK_CONTAINER(attention_button), bbox); |
|
| 1646 image = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION, |
|
| 1647 gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL)); |
|
| 1648 gtk_box_pack_start(GTK_BOX(bbox), image, FALSE, FALSE, 0); |
|
| 1649 label = gtk_label_new_with_mnemonic(_("_Attention!")); |
|
| 1650 gtk_box_pack_start(GTK_BOX(bbox), label, FALSE, FALSE, 0); |
|
| 1651 gtk_box_pack_start(GTK_BOX(box), attention_button, FALSE, FALSE, 0); |
|
| 1652 g_signal_connect_swapped(G_OBJECT(attention_button), "clicked", |
|
| 1653 G_CALLBACK(gtk_button_clicked), priv->attention); |
|
| 1654 gtk_widget_show_all(attention_button); |
|
| 1655 |
|
| 1656 g_signal_connect(G_OBJECT(priv->attention), "notify::sensitive", |
|
| 1657 G_CALLBACK(button_sensitiveness_changed), attention_button); |
|
| 1658 g_signal_connect(G_OBJECT(priv->attention), "notify::visible", |
|
| 1659 G_CALLBACK(button_visibility_changed), attention_button); |
|
| 1660 |
|
| 1661 /* set attention button to be greyed out until we get a conversation */ |
1536 /* set attention button to be greyed out until we get a conversation */ |
| 1662 gtk_widget_set_sensitive(priv->attention, FALSE); |
1537 gtk_action_set_sensitive(priv->attention, FALSE); |
| 1663 |
1538 |
| 1664 gtk_box_pack_start(GTK_BOX(hbox), box, FALSE, FALSE, 0); |
1539 purple_prefs_connect_callback(toolbar, |
| 1665 priv->lean_view = box; |
1540 PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", |
| 1666 gtk_widget_show(box); |
1541 webviewtoolbar_view_pref_changed, toolbar); |
| 1667 |
|
| 1668 purple_prefs_connect_callback(toolbar, PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", |
|
| 1669 webviewtoolbar_view_pref_changed, toolbar); |
|
| 1670 g_signal_connect_data(G_OBJECT(toolbar), "realize", |
1542 g_signal_connect_data(G_OBJECT(toolbar), "realize", |
| 1671 G_CALLBACK(purple_prefs_trigger_callback), PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", |
1543 G_CALLBACK(purple_prefs_trigger_callback), |
| 1672 NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED); |
1544 PIDGIN_PREFS_ROOT "/conversations/toolbar/wide", |
| 1673 |
1545 NULL, G_CONNECT_AFTER | G_CONNECT_SWAPPED); |
| 1674 gtk_event_box_set_visible_window(GTK_EVENT_BOX(event), FALSE); |
1546 |
| 1675 |
1547 g_signal_connect(G_OBJECT(hbox), "button-press-event", |
| 1676 gtk_widget_add_events(event, GDK_BUTTON_PRESS_MASK); |
1548 G_CALLBACK(gtk_webviewtoolbar_popup_menu), toolbar); |
| 1677 gtk_box_pack_start(GTK_BOX(hbox), event, TRUE, TRUE, 0); |
|
| 1678 g_signal_connect(G_OBJECT(event), "button-press-event", G_CALLBACK(gtk_webviewtoolbar_popup_menu), toolbar); |
|
| 1679 gtk_widget_show(event); |
|
| 1680 } |
1549 } |
| 1681 |
1550 |
| 1682 /****************************************************************************** |
1551 /****************************************************************************** |
| 1683 * Public API |
1552 * Public API |
| 1684 *****************************************************************************/ |
1553 *****************************************************************************/ |