Mercurial > pidgin.yaz
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; |