]> git.sur5r.net Git - i3/i3/commitdiff
add dump-asy.pl, renders the tree with asymptote
authorMichael Stapelberg <michael@stapelberg.de>
Tue, 13 Apr 2010 18:20:03 +0000 (20:20 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Tue, 13 Apr 2010 18:20:03 +0000 (20:20 +0200)
dump-asy.pl [new file with mode: 0755]

diff --git a/dump-asy.pl b/dump-asy.pl
new file mode 100755 (executable)
index 0000000..343a39c
--- /dev/null
@@ -0,0 +1,45 @@
+#!/usr/bin/env perl
+# vim:ts=4:sw=4:expandtab
+# renders the layout tree using asymptote
+
+use strict;
+use warnings;
+use Data::Dumper;
+use AnyEvent::I3;
+use File::Temp;
+use v5.10;
+
+my $i3 = i3("/tmp/nestedcons");
+
+my $tree = $i3->get_workspaces->recv;
+
+my $tmp = File::Temp->new(UNLINK => 0, SUFFIX => '.asy');
+
+say $tmp "import drawtree;";
+
+say $tmp "treeLevelStep = 2cm;";
+
+sub dump_node {
+       my ($n, $parent) = @_;
+
+    my $o = ($n->{orientation} == 0 ? "h" : "v");
+    my $w = (defined($n->{window}) ? $n->{window} : "N");
+    my $na = $n->{name};
+    $na =~ s/#/\\#/g;
+    my $name = "($na, $o, $w)";
+
+    print $tmp "TreeNode n" . $n->{id} . " = makeNode(";
+
+    print $tmp "n" . $parent->{id} . ", " if defined($parent);
+    print $tmp "\"" . $name . "\");\n";
+
+       dump_node($_, $n) for @{$n->{nodes}};
+}
+
+dump_node($tree);
+say $tmp "draw(n" . $tree->{id} . ", (0, 0));";
+
+close($tmp);
+my $rep = "$tmp";
+$rep =~ s/asy$/eps/;
+system("cd /tmp && asy $tmp && gv $rep && rm $rep");