[gtk+] GtkBuilder: Introduce some private helpers
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkBuilder: Introduce some private helpers
- Date: Mon, 27 Apr 2015 05:18:00 +0000 (UTC)
commit c8446f43fdc1c5059204a3cbc7d8178683fe0c1a
Author: Matthias Clasen <mclasen redhat com>
Date: Sun Apr 26 03:07:56 2015 -0400
GtkBuilder: Introduce some private helpers
Add functions that help reporting errors from builder
subparsers consistently.
gtk/gtkbuilder.c | 60 +++++++++++++++++++++++++++++++++++++++++++++++
gtk/gtkbuilderprivate.h | 13 ++++++++++
2 files changed, 73 insertions(+), 0 deletions(-)
---
diff --git a/gtk/gtkbuilder.c b/gtk/gtkbuilder.c
index 069106b..96b3347 100644
--- a/gtk/gtkbuilder.c
+++ b/gtk/gtkbuilder.c
@@ -2606,3 +2606,63 @@ gtk_builder_get_application (GtkBuilder *builder)
return builder->priv->application;
}
+
+void
+_gtk_builder_prefix_error (GtkBuilder *builder,
+ GMarkupParseContext *context,
+ GError **error)
+{
+ gint line, col;
+
+ g_markup_parse_context_get_position (context, &line, &col);
+ g_prefix_error (error, "%s:%d:%d ", builder->priv->filename, line, col);
+}
+
+void
+_gtk_builder_error_unhandled_tag (GtkBuilder *builder,
+ GMarkupParseContext *context,
+ const gchar *object,
+ const gchar *element_name,
+ GError **error)
+{
+ gint line, col;
+
+ g_markup_parse_context_get_position (context, &line, &col);
+ g_set_error (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_UNHANDLED_TAG,
+ "%s:%d:%d Unsupported tag for %s: <%s>",
+ builder->priv->filename, line, col,
+ object, element_name);
+}
+
+gboolean
+_gtk_builder_check_parent (GtkBuilder *builder,
+ GMarkupParseContext *context,
+ const gchar *parent_name,
+ GError **error)
+{
+ const GSList *stack;
+ gint line, col;
+ const gchar *parent;
+ const gchar *element;
+
+ stack = g_markup_parse_context_get_element_stack (context);
+
+ element = (const gchar *)stack->data;
+ parent = stack->next ? (const gchar *)stack->next->data : "";
+
+ if (g_str_equal (parent_name, parent) ||
+ (g_str_equal (parent_name, "object") && g_str_equal (parent, "template")))
+ return TRUE;
+
+ g_markup_parse_context_get_position (context, &line, &col);
+ g_set_error (error,
+ GTK_BUILDER_ERROR,
+ GTK_BUILDER_ERROR_INVALID_TAG,
+ "%s:%d:%d Can't use <%s> here",
+ builder->priv->filename, line, col, element);
+
+ return FALSE;
+}
+
diff --git a/gtk/gtkbuilderprivate.h b/gtk/gtkbuilderprivate.h
index fe619d4..d64fa10 100644
--- a/gtk/gtkbuilderprivate.h
+++ b/gtk/gtkbuilderprivate.h
@@ -185,4 +185,17 @@ guint _gtk_builder_extend_with_template (GtkBuilder *builder,
gsize length,
GError **error);
+void _gtk_builder_prefix_error (GtkBuilder *builder,
+ GMarkupParseContext *context,
+ GError **error);
+void _gtk_builder_error_unhandled_tag (GtkBuilder *builder,
+ GMarkupParseContext *context,
+ const gchar *object,
+ const gchar *element_name,
+ GError **error);
+gboolean _gtk_builder_check_parent (GtkBuilder *builder,
+ GMarkupParseContext *context,
+ const gchar *parent_name,
+ GError **error);
+
#endif /* __GTK_BUILDER_PRIVATE_H__ */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]