[gtk+/wip/otte/tokenizer: 38/42] cssimage: Add a token parser for icontheme images
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/otte/tokenizer: 38/42] cssimage: Add a token parser for icontheme images
- Date: Sun, 20 Mar 2016 05:04:13 +0000 (UTC)
commit c4b635ba7696ed671eb0eb3a1dc06a02da2c4c68
Author: Benjamin Otte <otte redhat com>
Date: Sat Mar 19 05:25:28 2016 +0100
cssimage: Add a token parser for icontheme images
gtk/gtkcssimageicontheme.c | 40 ++++++++++++++++++++++++++++++++++++++++
1 files changed, 40 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkcssimageicontheme.c b/gtk/gtkcssimageicontheme.c
index 4451e19..520ec58 100644
--- a/gtk/gtkcssimageicontheme.c
+++ b/gtk/gtkcssimageicontheme.c
@@ -117,6 +117,45 @@ gtk_css_image_icon_theme_parse (GtkCssImage *image,
return TRUE;
}
+static gboolean
+token_parse_arg (GtkCssTokenSource *source,
+ guint arg,
+ gpointer data)
+{
+ GtkCssImageIconTheme *icon_theme = data;
+ const GtkCssToken *token;
+
+ token = gtk_css_token_source_get_token (source);
+ if (!gtk_css_token_is (token, GTK_CSS_TOKEN_STRING))
+ {
+ gtk_css_token_source_error (source, "Expected a string for the icon name");
+ gtk_css_token_source_consume_all (source);
+ return FALSE;
+ }
+
+ icon_theme->name = g_strdup (token->string.string);
+
+ gtk_css_token_source_consume_token (source);
+ return TRUE;
+}
+
+static gboolean
+gtk_css_image_icon_theme_token_parse (GtkCssImage *image,
+ GtkCssTokenSource *source)
+{
+ const GtkCssToken *token;
+
+ token = gtk_css_token_source_get_token (source);
+ if (!gtk_css_token_is_function (token, "-gtk-icontheme"))
+ {
+ gtk_css_token_source_error (source, "Expected '-gtk-icontheme('");
+ gtk_css_token_source_consume_all (source);
+ return FALSE;
+ }
+
+ return gtk_css_token_source_consume_function (source, 1, 1, token_parse_arg, image);
+}
+
static void
gtk_css_image_icon_theme_print (GtkCssImage *image,
GString *string)
@@ -177,6 +216,7 @@ _gtk_css_image_icon_theme_class_init (GtkCssImageIconThemeClass *klass)
image_class->get_aspect_ratio = gtk_css_image_icon_theme_get_aspect_ratio;
image_class->draw = gtk_css_image_icon_theme_draw;
image_class->parse = gtk_css_image_icon_theme_parse;
+ image_class->token_parse = gtk_css_image_icon_theme_token_parse;
image_class->print = gtk_css_image_icon_theme_print;
image_class->compute = gtk_css_image_icon_theme_compute;
image_class->equal = gtk_css_image_icon_theme_equal;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]