From 31e37ca258bae2cb6d902f9a088f13e882fa6c39 Mon Sep 17 00:00:00 2001 From: James Westman Date: Tue, 14 Dec 2021 20:25:28 -0600 Subject: [PATCH] decompiler: Support GtkFileFilter tags --- blueprintcompiler/decompiler.py | 25 +++++++++++++++++++++++++ tests/samples/file_filter.blp | 16 +++++++++++++--- tests/test_samples.py | 1 + 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/blueprintcompiler/decompiler.py b/blueprintcompiler/decompiler.py index 32d3239..0249ad5 100644 --- a/blueprintcompiler/decompiler.py +++ b/blueprintcompiler/decompiler.py @@ -375,6 +375,31 @@ def decompile_state(ctx, gir, name, cdata, translatable="false"): ctx.print_attribute(name, cdata, gtk_a11y.get_types(ctx.gir).get(name)) +@decompiler("mime-types") +def decompile_mime_types(ctx, gir): + ctx.print("mime-types [") + +@decompiler("mime-type", cdata=True) +def decompile_mime_type(ctx, gir, cdata): + ctx.print(f'"{cdata}",') + +@decompiler("patterns") +def decompile_patterns(ctx, gir): + ctx.print("patterns [") + +@decompiler("pattern", cdata=True) +def decompile_pattern(ctx, gir, cdata): + ctx.print(f'"{cdata}",') + +@decompiler("suffixes") +def decompile_suffixes(ctx, gir): + ctx.print("suffixes [") + +@decompiler("suffix", cdata=True) +def decompile_suffix(ctx, gir, cdata): + ctx.print(f'"{cdata}",') + + @dataclass class UnsupportedError(Exception): message: str = "unsupported feature" diff --git a/tests/samples/file_filter.blp b/tests/samples/file_filter.blp index 921a254..3a52c3f 100644 --- a/tests/samples/file_filter.blp +++ b/tests/samples/file_filter.blp @@ -2,7 +2,17 @@ using Gtk 4.0; FileFilter { name: "File Filter Name"; - mime-types ["text/plain", "image/ *"] - patterns ["*.txt"] - suffixes ["png"] + + mime-types [ + "text/plain", + "image/ *", + ] + + patterns [ + "*.txt", + ] + + suffixes [ + "png", + ] } diff --git a/tests/test_samples.py b/tests/test_samples.py index ce3d700..85c5455 100644 --- a/tests/test_samples.py +++ b/tests/test_samples.py @@ -168,6 +168,7 @@ class TestSamples(unittest.TestCase): self.assert_decompile("accessibility_dec") self.assert_decompile("binding") self.assert_decompile("child_type") + self.assert_decompile("file_filter") self.assert_decompile("flags") self.assert_decompile("id_prop") self.assert_decompile("layout_dec")