From 3c2a759c21cbf978dbde86c588cdc8ec7b0dfd80 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 29 Jul 2015 13:03:56 -0400 Subject: [PATCH] gtk3-demo: Add a markup demo --- demos/gtk-demo/Makefile.am | 1 + demos/gtk-demo/demo.gresource.xml | 4 ++ demos/gtk-demo/markup.c | 64 +++++++++++++++++++++++++++++++ demos/gtk-demo/markup.txt | 14 +++++++ 4 files changed, 83 insertions(+) create mode 100644 demos/gtk-demo/markup.c create mode 100644 demos/gtk-demo/markup.txt diff --git a/demos/gtk-demo/Makefile.am b/demos/gtk-demo/Makefile.am index 2067229613..f89dd33c44 100644 --- a/demos/gtk-demo/Makefile.am +++ b/demos/gtk-demo/Makefile.am @@ -39,6 +39,7 @@ demos_base = \ listbox.c \ flowbox.c \ list_store.c \ + markup.c \ menus.c \ offscreen_window.c \ offscreen_window2.c \ diff --git a/demos/gtk-demo/demo.gresource.xml b/demos/gtk-demo/demo.gresource.xml index ed879ccd90..6bdcdf76a3 100644 --- a/demos/gtk-demo/demo.gresource.xml +++ b/demos/gtk-demo/demo.gresource.xml @@ -145,6 +145,7 @@ links.c listbox.c list_store.c + markup.c menus.c offscreen_window.c offscreen_window2.c @@ -201,4 +202,7 @@ decor1.png decor2.png + + markup.txt + diff --git a/demos/gtk-demo/markup.c b/demos/gtk-demo/markup.c new file mode 100644 index 0000000000..8ac49c138f --- /dev/null +++ b/demos/gtk-demo/markup.c @@ -0,0 +1,64 @@ +/* Text Widget/Markup + * + * GtkTextBuffer lets you define your own tags that can influence + * text formatting in a variety of ways. In this example, we show + * that GtkTextBuffer can load Pango markup and automatically generate + * suitable tags. + */ + +#include + +GtkWidget * +do_markup (GtkWidget *do_widget) +{ + static GtkWidget *window = NULL; + + if (!window) + { + GtkWidget *view; + GtkWidget *sw; + GtkTextBuffer *buffer; + GtkTextIter iter; + GBytes *bytes; + const gchar *markup; + + window = gtk_window_new (GTK_WINDOW_TOPLEVEL); + gtk_window_set_screen (GTK_WINDOW (window), + gtk_widget_get_screen (do_widget)); + gtk_window_set_default_size (GTK_WINDOW (window), 450, 400); + g_signal_connect (window, "destroy", + G_CALLBACK (gtk_widget_destroyed), &window); + + gtk_window_set_title (GTK_WINDOW (window), "Markup"); + + view = gtk_text_view_new (); + gtk_text_view_set_wrap_mode (GTK_TEXT_VIEW (view), GTK_WRAP_WORD); + gtk_text_view_set_left_margin (GTK_TEXT_VIEW (view), 10); + gtk_text_view_set_right_margin (GTK_TEXT_VIEW (view), 10); + + sw = gtk_scrolled_window_new (NULL, NULL); + gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw), + GTK_POLICY_NEVER, + GTK_POLICY_AUTOMATIC); + gtk_container_add (GTK_CONTAINER (window), sw); + gtk_container_add (GTK_CONTAINER (sw), view); + + bytes = g_resources_lookup_data ("/markup/markup.txt", 0, NULL); + markup = (const gchar *)g_bytes_get_data (bytes, NULL); + + buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); + gtk_text_buffer_get_start_iter (buffer, &iter); + gtk_text_buffer_insert_markup (buffer, &iter, markup, -1); + + g_bytes_unref (bytes); + + gtk_widget_show_all (sw); + } + + if (!gtk_widget_get_visible (window)) + gtk_widget_show (window); + else + gtk_widget_destroy (window); + + return window; +} diff --git a/demos/gtk-demo/markup.txt b/demos/gtk-demo/markup.txt new file mode 100644 index 0000000000..a2562887a0 --- /dev/null +++ b/demos/gtk-demo/markup.txt @@ -0,0 +1,14 @@ + +Text sizes: tiny very small small normal large very large huge + +Colorful underlines + +Colorful strikethroughs + +Text colors + +More superscripts: 222 + +Letterspacing + +Shortcuts: MonospaceBoldItalicBigSmallUnderlinedStrikethrough – Superscript – Subscript