diff options
author | Leo Tenenbaum <pommicket@gmail.com> | 2018-08-20 21:12:06 -0400 |
---|---|---|
committer | Leo Tenenbaum <pommicket@gmail.com> | 2018-08-20 21:12:06 -0400 |
commit | 63e87c2d0c9d263f14c77b68f85c67d46ece82a9 (patch) | |
tree | 6260365cbf7d24f37d27669e8538227fcb72e243 /gtk+-mingw/share/gtk-3.0/demo/css_basics.c | |
parent | a4460f6d9453bbd7e584937686449cef3e19f052 (diff) |
Diffstat (limited to 'gtk+-mingw/share/gtk-3.0/demo/css_basics.c')
-rw-r--r-- | gtk+-mingw/share/gtk-3.0/demo/css_basics.c | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/gtk+-mingw/share/gtk-3.0/demo/css_basics.c b/gtk+-mingw/share/gtk-3.0/demo/css_basics.c deleted file mode 100644 index b8ee668..0000000 --- a/gtk+-mingw/share/gtk-3.0/demo/css_basics.c +++ /dev/null @@ -1,121 +0,0 @@ -/* CSS Theming/CSS Basics :: css_basics.css - * - * Gtk themes are written using CSS. Every widget is build of multiple items - * that you can style very similarly to a regular website. - * - */ - -#include <gtk/gtk.h> - -static GtkWidget *window = NULL; - -static void -show_parsing_error (GtkCssProvider *provider, - GtkCssSection *section, - const GError *error, - GtkTextBuffer *buffer) -{ - GtkTextIter start, end; - const char *tag_name; - - gtk_text_buffer_get_iter_at_line_index (buffer, - &start, - gtk_css_section_get_start_line (section), - gtk_css_section_get_start_position (section)); - gtk_text_buffer_get_iter_at_line_index (buffer, - &end, - gtk_css_section_get_end_line (section), - gtk_css_section_get_end_position (section)); - - if (g_error_matches (error, GTK_CSS_PROVIDER_ERROR, GTK_CSS_PROVIDER_ERROR_DEPRECATED)) - tag_name = "warning"; - else - tag_name = "error"; - - gtk_text_buffer_apply_tag_by_name (buffer, tag_name, &start, &end); -} - -static void -css_text_changed (GtkTextBuffer *buffer, - GtkCssProvider *provider) -{ - GtkTextIter start, end; - char *text; - - gtk_text_buffer_get_start_iter (buffer, &start); - gtk_text_buffer_get_end_iter (buffer, &end); - gtk_text_buffer_remove_all_tags (buffer, &start, &end); - - text = gtk_text_buffer_get_text (buffer, &start, &end, FALSE); - gtk_css_provider_load_from_data (provider, text, -1, NULL); - g_free (text); - - gtk_style_context_reset_widgets (gdk_screen_get_default ()); -} - -static void -apply_css (GtkWidget *widget, GtkStyleProvider *provider) -{ - gtk_style_context_add_provider (gtk_widget_get_style_context (widget), provider, G_MAXUINT); - if (GTK_IS_CONTAINER (widget)) - gtk_container_forall (GTK_CONTAINER (widget), (GtkCallback) apply_css, provider); -} - -GtkWidget * -do_css_basics (GtkWidget *do_widget) -{ - if (!window) - { - GtkWidget *container, *child; - GtkStyleProvider *provider; - GtkTextBuffer *text; - GBytes *bytes; - - window = gtk_window_new (GTK_WINDOW_TOPLEVEL); - gtk_window_set_transient_for (GTK_WINDOW (window), GTK_WINDOW (do_widget)); - gtk_window_set_default_size (GTK_WINDOW (window), 400, 300); - g_signal_connect (window, "destroy", - G_CALLBACK (gtk_widget_destroyed), &window); - - text = gtk_text_buffer_new (NULL); - gtk_text_buffer_create_tag (text, - "warning", - "underline", PANGO_UNDERLINE_SINGLE, - NULL); - gtk_text_buffer_create_tag (text, - "error", - "underline", PANGO_UNDERLINE_ERROR, - NULL); - - provider = GTK_STYLE_PROVIDER (gtk_css_provider_new ()); - - container = gtk_scrolled_window_new (NULL, NULL); - gtk_container_add (GTK_CONTAINER (window), container); - child = gtk_text_view_new_with_buffer (text); - gtk_container_add (GTK_CONTAINER (container), child); - g_signal_connect (text, - "changed", - G_CALLBACK (css_text_changed), - provider); - - bytes = g_resources_lookup_data ("/css_basics/gtk.css", 0, NULL); - gtk_text_buffer_set_text (text, g_bytes_get_data (bytes, NULL), g_bytes_get_size (bytes)); - - g_signal_connect (provider, - "parsing-error", - G_CALLBACK (show_parsing_error), - gtk_text_view_get_buffer (GTK_TEXT_VIEW (child))); - - apply_css (window, provider); - } - - if (!gtk_widget_get_visible (window)) - gtk_widget_show_all (window); - else - { - gtk_widget_destroy (window); - window = NULL; - } - - return window; -} |