diff options
author | Jan Pokorný <jpokorny@redhat.com> | 2013-10-23 16:51:03 +0200 |
---|---|---|
committer | Jan Pokorný <jpokorny@redhat.com> | 2013-10-23 16:51:03 +0200 |
commit | 3af7028a665f295888f529fac499bdc018622bc9 (patch) | |
tree | 153d3c823b3ca0c20061f3c7be215403a313d023 /lib.py | |
parent | f7337bbc39bbcbb1e41a0aba059ac70162d47fbd (diff) | |
download | cluster-overview-3af7028a665f295888f529fac499bdc018622bc9.tar.gz cluster-overview-3af7028a665f295888f529fac499bdc018622bc9.tar.xz cluster-overview-3af7028a665f295888f529fac499bdc018622bc9.zip |
Generate xdot format directly via pydot that allows customization
as used, e.g., for fonts. We are still at a single subprocess invocation
after all.
Signed-off-by: Jan Pokorný <jpokorny@redhat.com>
Diffstat (limited to 'lib.py')
-rw-r--r-- | lib.py | 51 |
1 files changed, 34 insertions, 17 deletions
@@ -142,7 +142,7 @@ def gen_graph(graph, blacklist=(), **kwargs): return graph() -def xdot_graph(*args, **kwargs): +def xdot_graph(graph, *args, **kwargs): import gtk import gtk.gdk import pango @@ -239,16 +239,24 @@ def xdot_graph(*args, **kwargs): bl.append(cls) change = True if change and self._can_change: - self.set_dotcode( - gen_graph(*self._args, **self._kwargs).to_string()) + self.set_xdotcode( + xdotcode = gen_graph(self._graph, **self._kwargs).create( + format='xdot', + prog=self._prog + ) + ) def on_clean_all(self, widget): self._can_change = False for item in filter(lambda x: isinstance(x, gtk.CheckMenuItem), widget.get_parent().get_children()): item.set_active(False) - self.set_dotcode( - gen_graph(*self._args, **self._kwargs).to_string()) + self.set_xdotcode( + xdotcode = gen_graph(self._graph, **self._kwargs).create( + format='xdot', + prog=self._prog + ) + ) self._can_change = True def on_set_all(self, widget): @@ -256,25 +264,34 @@ def xdot_graph(*args, **kwargs): for item in filter(lambda x: isinstance(x, gtk.CheckMenuItem), widget.get_parent().get_children()): item.set_active(True) - self.set_dotcode( - gen_graph(*self._args, **self._kwargs).to_string()) + self.set_xdotcode( + xdotcode = gen_graph(self._graph, **self._kwargs).create( + format='xdot', + prog=self._prog + ) + ) self._can_change = True - def __init__(self, *args, **kwargs): - self._args = args + def __init__(self, graph, *args, **kwargs): + self._graph = graph + self._prog = ['dot'] + list(args) self._kwargs = kwargs - self._can_change = True try: super(LibDotWindow, self).__init__(LibDotWidget()) except TypeError: print >>stderr, "xdot too old, you won't get tooltips :-/" super(LibDotWindow, self).__init__() - dotcode = gen_graph(*args, **kwargs).to_string() - title = dotcode[dotcode.find('digraph', 0, 512) + len('digraph') - : - dotcode.find('{', 0, 512)].strip(' \'"') + xdotcode = gen_graph(self._graph, **self._kwargs).create( + format='xdot', + prog=self._prog + ) + title = xdotcode[xdotcode.find('digraph', 0, 512) + len('digraph') + : + xdotcode.find('{', 0, 512)].strip(' \'"') self.base_title = title - self.set_dotcode(dotcode) + self.update_title() + self.set_xdotcode(xdotcode) + self._can_change = True mb = gtk.MenuBar() @@ -346,7 +363,7 @@ def xdot_graph(*args, **kwargs): self.maximize() self.show_all() - window = LibDotWindow(*args, **kwargs) + window = LibDotWindow(graph, *args, **kwargs) window.connect('destroy', gtk.main_quit) gtk.main() @@ -356,7 +373,7 @@ def main(graph, argv, *args, **kws): x, argv = (1, argv[1:]) if len(argv) <= 1 or argv[1] == '-x' else (0, argv) output = kws.pop('output', 'sinenomine') if x: - xdot_graph(graph, **kws) + xdot_graph(graph, *args, **kws) else: LibMeta.promote_url = True ext = argv[1] if len(argv) > 1 else 'pdf' |