~abentley/bzrtools/bzrtools.dev

« back to all changes in this revision

Viewing changes to dotgraph.py

  • Committer: Aaron Bentley
  • Date: 2006-12-12 16:50:31 UTC
  • Revision ID: abentley@panoramicfeedback.com-20061212165031-51w8gjy1eps1vnw0
update NEWS

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# Copyright (C) 2004, 2005 Aaron Bentley
2
 
# <aaron@aaronbentley.com>
 
2
# <aaron.bentley@utoronto.ca>
3
3
#
4
4
#    This program is free software; you can redistribute it and/or modify
5
5
#    it under the terms of the GNU General Public License as published by
16
16
#    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
17
 
18
18
from subprocess import Popen, PIPE
 
19
from urllib import urlencode
 
20
from xml.sax.saxutils import escape
19
21
import os.path
20
22
import errno
21
23
import tempfile
22
24
import shutil
 
25
import time
23
26
 
24
27
RSVG_OUTPUT_TYPES = ('png', 'jpg')
25
 
DOT_OUTPUT_TYPES = ('svg', 'svgz', 'gif', 'jpg', 'ps', 'fig', 'mif', 'png',
 
28
DOT_OUTPUT_TYPES = ('svg', 'svgz', 'gif', 'jpg', 'ps', 'fig', 'mif', 'png', 
26
29
                    'cmapx')
27
30
 
28
31
class NoDot(Exception):
49
52
        self.message = message
50
53
        self.href = None
51
54
 
52
 
    @staticmethod
53
 
    def get_attribute(name, value):
54
 
        if value is None:
55
 
            return ''
56
 
        value = value.replace("\\", "\\\\")
57
 
        value = value.replace('"', '\\"')
58
 
        value = value.replace('\n', '\\n')
59
 
        return '%s="%s"' % (name, value)
60
 
 
61
55
    def define(self):
62
56
        attributes = []
63
57
        style = []
71
65
        if label is not None:
72
66
            attributes.append('label="%s"' % label)
73
67
        attributes.append('shape="box"')
74
 
        tooltip = None
 
68
        tooltip = ''
75
69
        if self.message is not None:
76
 
            tooltip = self.message
77
 
        attributes.append(self.get_attribute('tooltip', tooltip))
 
70
            tooltip += self.message.replace('"', '\\"')
 
71
        if tooltip:
 
72
            attributes.append('tooltip="%s"' % tooltip)
78
73
        if self.href is not None:
79
74
            attributes.append('href="%s"' % self.href)
80
75
        elif tooltip:
203
198
        shutil.rmtree(tempdir)
204
199
    return status
205
200
 
206
 
def invoke_dot(input, out_file=None, file_type='svg', antialias=None,
 
201
def invoke_dot(input, out_file=None, file_type='svg', antialias=None, 
207
202
               fontname="Helvetica", fontsize=11):
208
 
    cmdline = ['dot', '-T%s' % file_type, '-Nfontname=%s' % fontname,
 
203
    cmdline = ['dot', '-T%s' % file_type, '-Nfontname=%s' % fontname, 
209
204
               '-Efontname=%s' % fontname, '-Nfontsize=%d' % fontsize,
210
205
               '-Efontsize=%d' % fontsize]
211
206
    if out_file is not None: