[gtk+/wip/matthiasc/builder-tool: 2/4] Do validation before simplification
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+/wip/matthiasc/builder-tool: 2/4] Do validation before simplification
- Date: Mon, 27 Apr 2015 22:53:48 +0000 (UTC)
commit 089f5ceb96746946dbd9b04be176dbfe3324359e
Author: Matthias Clasen <mclasen redhat com>
Date: Mon Apr 27 18:25:09 2015 -0400
Do validation before simplification
Use GtkBuilder to parse the file first, and report any errors
it finds before using our own simple-minded parser to simplify.
gtk/gtk-builder-tool.c | 71 ++++++++++++++++++++++++++++++++++++-----------
1 files changed, 54 insertions(+), 17 deletions(-)
---
diff --git a/gtk/gtk-builder-tool.c b/gtk/gtk-builder-tool.c
index 0bea932..45c4daa 100644
--- a/gtk/gtk-builder-tool.c
+++ b/gtk/gtk-builder-tool.c
@@ -361,28 +361,18 @@ GMarkupParser parser = {
NULL
};
-int
-main (int argc, char *argv[])
+static gboolean
+do_simplify (const gchar *filename)
{
GMarkupParseContext *context;
GError *error = NULL;
gchar *buffer;
ParserData data;
- gtk_init (NULL, NULL);
-
- gtk_test_register_all_types ();
-
- if (argc < 2)
- {
- g_printerr ("No file given.\n");
- return 1;
- }
-
- if (!g_file_get_contents (argv[1], &buffer, NULL, &error))
+ if (!g_file_get_contents (filename, &buffer, NULL, &error))
{
- g_printerr ("Failed to read file: %s.\n", error->message);
- return 1;
+ g_printerr ("Failed to read file: %s\n", error->message);
+ return FALSE;
}
data.builder = gtk_builder_new ();
@@ -398,9 +388,56 @@ main (int argc, char *argv[])
context = g_markup_parse_context_new (&parser, G_MARKUP_TREAT_CDATA_AS_TEXT, &data, NULL);
if (!g_markup_parse_context_parse (context, buffer, -1, &error))
{
- g_printerr ("Failed to parse file: %s.\n", error->message);
- return 1;
+ g_printerr ("Failed to parse file: %s\n", error->message);
+ return FALSE;
+ }
+
+ return TRUE;
+}
+
+static gboolean
+do_validate (const gchar *filename)
+{
+ GtkBuilder *builder;
+ GError *error = NULL;
+ gint ret;
+
+ builder = gtk_builder_new ();
+ ret = gtk_builder_add_from_file (builder, filename, &error);
+ g_object_unref (builder);
+
+ if (ret == 0)
+ {
+ g_printerr ("%s\n", error->message);
+ return FALSE;
}
+ return TRUE;
+}
+
+static void
+usage (void)
+{
+ g_print ("Usage: gtk-builder-tool FILE\n"
+ "Validate and simplify GtkBuilder .ui files.\n");
+ exit (1);
+}
+
+int
+main (int argc, char *argv[])
+{
+ gtk_init (NULL, NULL);
+
+ gtk_test_register_all_types ();
+
+ if (argc < 2)
+ usage ();
+
+ if (!do_validate (argv[1]))
+ return 1;
+
+ if (!do_simplify (argv[1]))
+ return 1;
+
return 0;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]