rendered paste body#include <gtk/gtk.h>
#include <libglade-2.0/glade/glade.h>
void create_tags (GtkTextBuffer * buffer);
void on_button_clear_clicked (GtkButton * button, gpointer user_data);
void on_button_cut_clicked (GtkButton * button, gpointer user_data);
void on_button_copy_clicked (GtkButton * button, gpointer user_data);
void on_button_paste_clicked (GtkButton * button, gpointer user_data);
void on_button_bold_clicked (GtkButton * button, gpointer user_data);
void on_button_underline_clicked (GtkButton * button, gpointer user_data);
void on_button_strikethrough_clicked (GtkButton * button, gpointer user_data);
void on_button_color_clicked (GtkButton * button, gpointer user_data);
void
on_button_clear_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_delete_selection (textbuffer, TRUE, TRUE);
}
void
on_button_cut_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_cut_clipboard (textbuffer,
gtk_clipboard_get (GDK_NONE), TRUE);
}
void
on_button_copy_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_copy_clipboard (textbuffer,
gtk_clipboard_get (GDK_NONE));
}
void
on_button_paste_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_paste_clipboard (textbuffer,
gtk_clipboard_get (GDK_NONE),
NULL, TRUE);
}
void
on_button_bold_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
GtkTextIter start, end;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);
gtk_text_buffer_apply_tag_by_name (textbuffer, "bold", &start,
&end);
}
void
on_button_underline_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
GtkTextIter start, end;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);
gtk_text_buffer_apply_tag_by_name (textbuffer, "underline", &start,
&end);
}
void
on_button_strikethrough_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
GtkTextIter start, end;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);
gtk_text_buffer_apply_tag_by_name (textbuffer, "strike", &start,
&end);
}
void
on_button_color_clicked (GtkButton * button, gpointer user_data)
{
GtkTextBuffer *textbuffer = NULL;
GtkTextIter start, end;
g_assert (GTK_IS_TEXT_VIEW (user_data));
textbuffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (user_data));
gtk_text_buffer_get_selection_bounds (textbuffer, &start, &end);
gtk_text_buffer_apply_tag_by_name (textbuffer, "color", &start,
&end);
}
void
create_tags (GtkTextBuffer * buffer)
{
g_assert (GTK_IS_TEXT_BUFFER (buffer));
gtk_text_buffer_create_tag (buffer, "bold",
"weight", PANGO_WEIGHT_BOLD, NULL);
gtk_text_buffer_create_tag (buffer, "underline",
"underline", PANGO_UNDERLINE_SINGLE,
NULL);
gtk_text_buffer_create_tag (buffer, "strike", "strikethrough",
TRUE, NULL);
gtk_text_buffer_create_tag (buffer, "color", "foreground", "blue",
NULL);
}
int
main (int argc, char *argv[])
{
GladeXML *xml_main_window;
GtkWidget *textview;
GtkTextBuffer *buffer;
gtk_init (&argc, &argv);
xml_main_window = glade_xml_new("editor.glade", NULL, NULL);
textview = glade_xml_get_widget (xml_main_window, "textview1");
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
create_tags (buffer);
/* connect signal handlers */
glade_xml_signal_autoconnect(xml_main_window);
/* start the event loop */
gtk_main ();
return 0;
}