comparison pidgin/gtkimhtml.c @ 27755:9a60b9fab0ea

propagate from branch 'im.pidgin.pidgin' (head d50f362e369f486aaf9a95a0d79ec0632743f07d) to branch 'im.pidgin.pidgin.yaz' (head 85b37cd20a00067af5a2da2760336b0c1016ef47)
author Yoshiki Yazawa <yaz@honeyplanet.jp>
date Mon, 07 Jan 2008 03:40:27 +0000
parents e13759a83714 c38d72677c8a
children e9cf897bd873
comparison
equal deleted inserted replaced
27754:754a82f1371b 27755:9a60b9fab0ea
291 return pasted; 291 return pasted;
292 } 292 }
293 #endif 293 #endif
294 294
295 static GtkSmileyTree* 295 static GtkSmileyTree*
296 gtk_smiley_tree_new () 296 gtk_smiley_tree_new (void)
297 { 297 {
298 return g_new0 (GtkSmileyTree, 1); 298 return g_new0 (GtkSmileyTree, 1);
299 } 299 }
300 300
301 static void 301 static void
818 } 818 }
819 819
820 static void hijack_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data) 820 static void hijack_menu_cb(GtkIMHtml *imhtml, GtkMenu *menu, gpointer data)
821 { 821 {
822 GtkWidget *menuitem; 822 GtkWidget *menuitem;
823 GtkWidget *mi, *img;
824 823
825 menuitem = gtk_menu_item_new_with_mnemonic(_("Paste as Plain _Text")); 824 menuitem = gtk_menu_item_new_with_mnemonic(_("Paste as Plain _Text"));
826 gtk_widget_show(menuitem); 825 gtk_widget_show(menuitem);
827 /* 826 /*
828 * TODO: gtk_clipboard_wait_is_text_available() iterates the glib 827 * TODO: gtk_clipboard_wait_is_text_available() iterates the glib
1018 } 1017 }
1019 1018
1020 static void imhtml_paste_insert(GtkIMHtml *imhtml, const char *text, gboolean plaintext) 1019 static void imhtml_paste_insert(GtkIMHtml *imhtml, const char *text, gboolean plaintext)
1021 { 1020 {
1022 GtkTextIter iter; 1021 GtkTextIter iter;
1023 GtkIMHtmlOptions flags = plaintext ? 0 : (GTK_IMHTML_NO_NEWLINE | GTK_IMHTML_NO_COMMENTS); 1022 GtkIMHtmlOptions flags = plaintext ? GTK_IMHTML_NO_SMILEY : (GTK_IMHTML_NO_NEWLINE | GTK_IMHTML_NO_COMMENTS);
1024 1023
1025 if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL)) 1024 if (gtk_text_buffer_get_selection_bounds(imhtml->text_buffer, NULL, NULL))
1026 gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE); 1025 gtk_text_buffer_delete_selection(imhtml->text_buffer, TRUE, TRUE);
1027 1026
1028 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, gtk_text_buffer_get_insert(imhtml->text_buffer)); 1027 gtk_text_buffer_get_iter_at_mark(imhtml->text_buffer, &iter, gtk_text_buffer_get_insert(imhtml->text_buffer));
1142 static void paste_clipboard_cb(GtkIMHtml *imhtml, gpointer blah) 1141 static void paste_clipboard_cb(GtkIMHtml *imhtml, gpointer blah)
1143 { 1142 {
1144 #ifdef _WIN32 1143 #ifdef _WIN32
1145 /* If we're on windows, let's see if we can get data from the HTML Format 1144 /* If we're on windows, let's see if we can get data from the HTML Format
1146 clipboard before we try to paste from the GTK buffer */ 1145 clipboard before we try to paste from the GTK buffer */
1147 if (!clipboard_paste_html_win32(imhtml)) { 1146 if (!clipboard_paste_html_win32(imhtml))
1148 #endif 1147 #endif
1148 {
1149 GtkClipboard *clipboard = gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_CLIPBOARD); 1149 GtkClipboard *clipboard = gtk_widget_get_clipboard(GTK_WIDGET(imhtml), GDK_SELECTION_CLIPBOARD);
1150 gtk_clipboard_request_contents(clipboard, gdk_atom_intern("text/html", FALSE), 1150 gtk_clipboard_request_contents(clipboard, gdk_atom_intern("text/html", FALSE),
1151 paste_received_cb, imhtml); 1151 paste_received_cb, imhtml);
1152 #ifdef _WIN32 1152 }
1153 }
1154 #endif
1155 g_signal_stop_emission_by_name(imhtml, "paste-clipboard"); 1153 g_signal_stop_emission_by_name(imhtml, "paste-clipboard");
1156 } 1154 }
1157 1155
1158 static void imhtml_realized_remove_primary(GtkIMHtml *imhtml, gpointer unused) 1156 static void imhtml_realized_remove_primary(GtkIMHtml *imhtml, gpointer unused)
1159 { 1157 {
1402 _("Color to draw hyperlinks."), 1400 _("Color to draw hyperlinks."),
1403 GDK_TYPE_COLOR, G_PARAM_READABLE)); 1401 GDK_TYPE_COLOR, G_PARAM_READABLE));
1404 gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("hyperlink-prelight-color", 1402 gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("hyperlink-prelight-color",
1405 _("Hyperlink prelight color"), 1403 _("Hyperlink prelight color"),
1406 _("Color to draw hyperlinks when mouse is over them."), 1404 _("Color to draw hyperlinks when mouse is over them."),
1405 GDK_TYPE_COLOR, G_PARAM_READABLE));
1406 gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("send-name-color",
1407 _("Sent Message Name Color"),
1408 _("Color to draw the name of a message you sent."),
1409 GDK_TYPE_COLOR, G_PARAM_READABLE));
1410 gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("receive-name-color",
1411 _("Received Message Name Color"),
1412 _("Color to draw the name of a message you received."),
1413 GDK_TYPE_COLOR, G_PARAM_READABLE));
1414 gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("highlight-name-color",
1415 _("\"Attention\" Name Color"),
1416 _("Color to draw the name of a message you received containing your name."),
1417 GDK_TYPE_COLOR, G_PARAM_READABLE));
1418 gtk_widget_class_install_style_property(widget_class, g_param_spec_boxed("action-name-color",
1419 _("Action Message Name Color"),
1420 _("Color to draw the name of an action message."),
1407 GDK_TYPE_COLOR, G_PARAM_READABLE)); 1421 GDK_TYPE_COLOR, G_PARAM_READABLE));
1408 1422
1409 binding_set = gtk_binding_set_by_class (parent_class); 1423 binding_set = gtk_binding_set_by_class (parent_class);
1410 gtk_binding_entry_add_signal (binding_set, GDK_b, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_BOLD); 1424 gtk_binding_entry_add_signal (binding_set, GDK_b, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_BOLD);
1411 gtk_binding_entry_add_signal (binding_set, GDK_i, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_ITALIC); 1425 gtk_binding_entry_add_signal (binding_set, GDK_i, GDK_CONTROL_MASK, "format_function_toggle", 1, G_TYPE_INT, GTK_IMHTML_ITALIC);
2988 } 3002 }
2989 c += tlen; 3003 c += tlen;
2990 pos += tlen; 3004 pos += tlen;
2991 g_free(tag); /* This was allocated back in VALID_TAG() */ 3005 g_free(tag); /* This was allocated back in VALID_TAG() */
2992 } else if (imhtml->edit.link == NULL && 3006 } else if (imhtml->edit.link == NULL &&
3007 !(options & GTK_IMHTML_NO_SMILEY) &&
2993 gtk_imhtml_is_smiley(imhtml, fonts, c, &smilelen)) { 3008 gtk_imhtml_is_smiley(imhtml, fonts, c, &smilelen)) {
2994 GtkIMHtmlFontDetail *fd; 3009 GtkIMHtmlFontDetail *fd;
2995 gchar *sml = NULL; 3010 gchar *sml = NULL;
2996 3011
2997 br = FALSE; 3012 br = FALSE;
3473 g_free(dirname); 3488 g_free(dirname);
3474 g_free(filename); 3489 g_free(filename);
3475 return; 3490 return;
3476 } 3491 }
3477 #endif /* FILECHOOSER */ 3492 #endif /* FILECHOOSER */
3493 #if 0 /* mismatched curly braces */
3494 }
3495 #endif
3478 3496
3479 /* 3497 /*
3480 * XXX - We should probably prompt the user to determine if they really 3498 * XXX - We should probably prompt the user to determine if they really
3481 * want to overwrite the file or not. However, I don't feel like doing 3499 * want to overwrite the file or not. However, I don't feel like doing
3482 * that, so we're just always going to overwrite if the file exists. 3500 * that, so we're just always going to overwrite if the file exists.
4263 g_return_if_fail(imhtml != NULL); 4281 g_return_if_fail(imhtml != NULL);
4264 4282
4265 object = g_object_ref(G_OBJECT(imhtml)); 4283 object = g_object_ref(G_OBJECT(imhtml));
4266 g_signal_emit(object, signals[TOGGLE_FORMAT], 0, button); 4284 g_signal_emit(object, signals[TOGGLE_FORMAT], 0, button);
4267 g_object_unref(object); 4285 g_object_unref(object);
4268 }
4269
4270 static void populate_popup_cb(GtkTextView *textview, GtkMenu *menu, gpointer nul)
4271 {
4272 GtkWidget *mi, *img;
4273
4274 mi = gtk_menu_item_new();
4275 gtk_widget_show(mi);
4276 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi);
4277
4278 img = gtk_image_new_from_stock(GTK_STOCK_BOLD, GTK_ICON_SIZE_MENU);
4279 mi = gtk_image_menu_item_new_with_mnemonic(_("_Font"));
4280 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
4281 gtk_widget_show(mi);
4282 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi);
4283
4284 img = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_INSERT, GTK_ICON_SIZE_MENU);
4285 mi = gtk_image_menu_item_new_with_mnemonic(_("_Insert"));
4286 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
4287 gtk_widget_show(mi);
4288 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi);
4289
4290 img = gtk_image_new_from_stock(PIDGIN_STOCK_TOOLBAR_SMILEY, GTK_ICON_SIZE_MENU);
4291 mi = gtk_image_menu_item_new_with_mnemonic(_("S_mile!"));
4292 gtk_image_menu_item_set_image(GTK_IMAGE_MENU_ITEM(mi), img);
4293 gtk_widget_show(mi);
4294 gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), mi);
4295 } 4286 }
4296 4287
4297 static void imhtml_toggle_bold(GtkIMHtml *imhtml) 4288 static void imhtml_toggle_bold(GtkIMHtml *imhtml)
4298 { 4289 {
4299 GtkTextIter start, end; 4290 GtkTextIter start, end;