From 118f2e6483b844908f3a497621a47c035cbf0efc Mon Sep 17 00:00:00 2001 From: Johan Dahlin Date: Thu, 28 Jun 2007 15:15:02 +0000 Subject: [PATCH] Prettify the output by running it through xmllint --format if xmllint is 2007-06-28 Johan Dahlin * gtk/gtk-builder-convert (_indent): Prettify the output by running it through xmllint --format if xmllint is available which also requires the subprocess module only available in python 2.4 or later svn path=/trunk/; revision=18281 --- ChangeLog | 7 +++++++ gtk/gtk-builder-convert | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 38 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 69f8dff9c8..ef25513526 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2007-06-28 Johan Dahlin + + * gtk/gtk-builder-convert (_indent): Prettify the output by + running it through xmllint --format if xmllint is available + which also requires the subprocess module only available + in python 2.4 or later + 2007-06-28 Christian Persch * gtk/gtkvolumebutton.c: (gtk_volume_button_class_init), diff --git a/gtk/gtk-builder-convert b/gtk/gtk-builder-convert index 7237c8fb2e..be33edf4e6 100644 --- a/gtk/gtk-builder-convert +++ b/gtk/gtk-builder-convert @@ -25,10 +25,18 @@ # GtkTextView.text -> GtkTextBuffer # Toolbars +import os import sys from xml.dom import minidom, Node +# The subprocess is only available in Python 2.4+ +try: + import subprocess + subprocess # pyflakes +except ImportError: + subprocess = None + def get_child_nodes(node): nodes = [] for child in node.childNodes: @@ -354,14 +362,34 @@ class GtkBuilderConverter(object): widget.getAttributeNode("constructor").value = parent_id node.removeAttribute("id") +def _indent(output): + if not subprocess: + return output + + for directory in os.environ['PATH'].split(os.pathsep): + filename = os.path.join(directory, 'xmllint') + if os.path.exists(filename): + break + else: + return output + + s = subprocess.Popen([filename, '--format', '-'], + stdin=subprocess.PIPE, + stdout=subprocess.PIPE) + s.stdin.write(output) + s.stdin.close() + return s.stdout.read() + def main(): if len(sys.argv) < 2: - print "Usage: %s filename.glade" % (sys.argv[0],) - return + raise SystemExit("Usage: %s filename.glade" % (sys.argv[0],)) + conv = GtkBuilderConverter() conv.parse_file(sys.argv[1]) - print conv.to_xml() + + xml = conv.to_xml() + print _indent(xml) if __name__ == "__main__": main()