General cleanup to GraphizReportDialog.

svn: r10624
This commit is contained in:
Brian Matherly 2008-04-23 03:25:41 +00:00
parent 4a17bcf0aa
commit 634fd3964d

View File

@ -83,28 +83,29 @@ _RATIO = [ { 'name' : _("Minimal size"), 'value' : "compress" },
_NOTELOC = [ { 'name' : _("Top"), 'value' : "t" }, _NOTELOC = [ { 'name' : _("Top"), 'value' : "t" },
{ 'name' : _("Bottom"), 'value' : "b" }] { 'name' : _("Bottom"), 'value' : "b" }]
_dot_found = 0
_gs_cmd = ""
if os.sys.platform == "win32": if os.sys.platform == "win32":
_dot_found = Utils.search_for("dot.exe") _DOT_FOUND = Utils.search_for("dot.exe")
if Utils.search_for("gswin32c.exe") == 1: if Utils.search_for("gswin32c.exe") == 1:
_gs_cmd = "gswin32c.exe" _GS_CMD = "gswin32c.exe"
elif Utils.search_for("gswin32.exe") == 1: elif Utils.search_for("gswin32.exe") == 1:
_gs_cmd = "gswin32.exe" _GS_CMD = "gswin32.exe"
else:
_GS_CMD = ""
else: else:
_dot_found = Utils.search_for("dot") _DOT_FOUND = Utils.search_for("dot")
if Utils.search_for("gs") == 1: if Utils.search_for("gs") == 1:
_gs_cmd = "gs" _GS_CMD = "gs"
else:
_GS_CMD = ""
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
# #
# GVDocBase # GVDocBase
# #
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
class GVDocBase(BaseDoc.BaseDoc,BaseDoc.GVDoc): class GVDocBase(BaseDoc.BaseDoc, BaseDoc.GVDoc):
""" """
Base document generator for all Graphiz document generators. Classes that Base document generator for all Graphiz document generators. Classes that
inherit from this class will only need to implement the close function. inherit from this class will only need to implement the close function.
@ -181,7 +182,7 @@ class GVDocBase(BaseDoc.BaseDoc,BaseDoc.GVDoc):
self.write( '\n' ) self.write( '\n' )
def write(self, text): def write(self, text):
self.dot.write(text.encode('iso-8859-1','xmlcharrefreplace')) self.dot.write(text.encode('iso-8859-1', 'xmlcharrefreplace'))
def open(self, filename): def open(self, filename):
self.filename = os.path.normpath(os.path.abspath(filename)) self.filename = os.path.normpath(os.path.abspath(filename))
@ -280,7 +281,7 @@ class GVDocBase(BaseDoc.BaseDoc,BaseDoc.GVDoc):
else: else:
self.write('# %s\n' % text) self.write('# %s\n' % text)
def start_subgraph(self,id): def start_subgraph(self, id):
self.write(' subgraph cluster_%s\n' % id) self.write(' subgraph cluster_%s\n' % id)
self.write(' {\n') self.write(' {\n')
@ -300,7 +301,7 @@ class GVDotDoc(GVDocBase):
if self.filename[-4:] != ".dot": if self.filename[-4:] != ".dot":
self.filename += ".dot" self.filename += ".dot"
file = open(self.filename,"w") file = open(self.filename, "w")
file.write(self.dot.getvalue()) file.write(self.dot.getvalue())
file.close() file.close()
@ -329,13 +330,13 @@ class GVPsDoc(GVDocBase):
self.filename += ".ps" self.filename += ".ps"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PS file. # Generate the PS file.
os.system( 'dot -Tps2 -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tps2 -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -358,13 +359,13 @@ class GVSvgDoc(GVDocBase):
self.filename += ".svg" self.filename += ".svg"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PS file. # Generate the PS file.
os.system( 'dot -Tsvg -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tsvg -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -387,13 +388,13 @@ class GVSvgzDoc(GVDocBase):
self.filename += ".svgz" self.filename += ".svgz"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PS file. # Generate the PS file.
os.system( 'dot -Tsvgz -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tsvgz -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -416,13 +417,13 @@ class GVPngDoc(GVDocBase):
self.filename += ".png" self.filename += ".png"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PS file. # Generate the PS file.
os.system( 'dot -Tpng -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tpng -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -445,13 +446,13 @@ class GVJpegDoc(GVDocBase):
self.filename += ".jpg" self.filename += ".jpg"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PS file. # Generate the PS file.
os.system( 'dot -Tjpg -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tjpg -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -474,13 +475,13 @@ class GVGifDoc(GVDocBase):
self.filename += ".gif" self.filename += ".gif"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PS file. # Generate the PS file.
os.system( 'dot -Tgif -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tgif -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -510,13 +511,13 @@ class GVPdfGvDoc(GVDocBase):
self.filename += ".pdf" self.filename += ".pdf"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Generate the PDF file. # Generate the PDF file.
os.system( 'dot -Tpdf -o"%s" "%s"' % (self.filename,tmp_dot) ) os.system( 'dot -Tpdf -o"%s" "%s"' % (self.filename, tmp_dot) )
# Delete the temporary dot file # Delete the temporary dot file
os.remove(tmp_dot) os.remove(tmp_dot)
@ -547,13 +548,13 @@ class GVPdfGsDoc(GVDocBase):
self.filename += ".pdf" self.filename += ".pdf"
# Create a temporary dot file # Create a temporary dot file
(handle,tmp_dot) = tempfile.mkstemp(".dot" ) (handle, tmp_dot) = tempfile.mkstemp(".dot" )
dotfile = os.fdopen(handle,"w") dotfile = os.fdopen(handle,"w")
dotfile.write(self.dot.getvalue()) dotfile.write(self.dot.getvalue())
dotfile.close() dotfile.close()
# Create a temporary PostScript file # Create a temporary PostScript file
(handle,tmp_ps) = tempfile.mkstemp(".ps" ) (handle, tmp_ps) = tempfile.mkstemp(".ps" )
os.close( handle ) os.close( handle )
# Generate PostScript using dot # Generate PostScript using dot
@ -568,7 +569,7 @@ class GVPdfGsDoc(GVDocBase):
# Convert to PDF using ghostscript # Convert to PDF using ghostscript
command = '%s -q -sDEVICE=pdfwrite -dNOPAUSE -dDEVICEWIDTHPOINTS=%d' \ command = '%s -q -sDEVICE=pdfwrite -dNOPAUSE -dDEVICEWIDTHPOINTS=%d' \
' -dDEVICEHEIGHTPOINTS=%d -sOutputFile="%s" "%s" -c quit' \ ' -dDEVICEHEIGHTPOINTS=%d -sOutputFile="%s" "%s" -c quit' \
% ( _gs_cmd, width_pt, height_pt, self.filename, tmp_ps ) % ( _GS_CMD, width_pt, height_pt, self.filename, tmp_ps )
os.system(command) os.system(command)
os.remove(tmp_ps) os.remove(tmp_ps)
@ -590,9 +591,9 @@ _formats += [{ 'type' : "dot",
'mime' : "text/x-graphviz", 'mime' : "text/x-graphviz",
'class': GVDotDoc }] 'class': GVDotDoc }]
if _dot_found: if _DOT_FOUND:
if _gs_cmd != "": if _GS_CMD != "":
_formats += [{ 'type' : "gspdf", _formats += [{ 'type' : "gspdf",
'ext' : "pdf", 'ext' : "pdf",
'descr': _("PDF (Ghostscript)"), 'descr': _("PDF (Ghostscript)"),
@ -650,12 +651,12 @@ class GraphvizFormatComboBox(gtk.ComboBox):
""" """
Format combo box class for Graphviz report. Format combo box class for Graphviz report.
""" """
def set(self,active=None): def set(self, active=None):
self.store = gtk.ListStore(gobject.TYPE_STRING) self.store = gtk.ListStore(gobject.TYPE_STRING)
self.set_model(self.store) self.set_model(self.store)
cell = gtk.CellRendererText() cell = gtk.CellRendererText()
self.pack_start(cell,True) self.pack_start(cell, True)
self.add_attribute(cell,'text',0) self.add_attribute(cell, 'text', 0)
out_pref = Config.get(Config.OUTPUT_PREFERENCE) out_pref = Config.get(Config.OUTPUT_PREFERENCE)
index = 0 index = 0
@ -743,7 +744,7 @@ class GraphvizReportDialog(ReportDialog):
font_size = NumberOption(_("Font size"), 14, 8, 128) font_size = NumberOption(_("Font size"), 14, 8, 128)
font_size.set_help(_("The font size, in points.")) font_size.set_help(_("The font size, in points."))
self.options.add_menu_option(category,"font_size", font_size) self.options.add_menu_option(category, "font_size", font_size)
rank_dir = EnumeratedListOption(_("Graph Direction"), 0) rank_dir = EnumeratedListOption(_("Graph Direction"), 0)
index = 0 index = 0
@ -869,16 +870,16 @@ class GraphvizReportDialog(ReportDialog):
"""Set up the format frame of the dialog.""" """Set up the format frame of the dialog."""
self.format_menu = GraphvizFormatComboBox() self.format_menu = GraphvizFormatComboBox()
self.format_menu.set(self.options.handler.get_format_name()) self.format_menu.set(self.options.handler.get_format_name())
self.format_menu.connect('changed',self.doc_type_changed) self.format_menu.connect('changed', self.doc_type_changed)
label = gtk.Label("%s:" % _("Output Format")) label = gtk.Label("%s:" % _("Output Format"))
label.set_alignment(0.0,0.5) label.set_alignment(0.0, 0.5)
self.tbl.attach(label,1,2,self.row,self.row+1,gtk.SHRINK|gtk.FILL) self.tbl.attach(label, 1, 2, self.row, self.row+1, gtk.SHRINK|gtk.FILL)
self.tbl.attach(self.format_menu,2,4,self.row,self.row+1, self.tbl.attach(self.format_menu, 2, 4, self.row, self.row+1,
yoptions=gtk.SHRINK) yoptions=gtk.SHRINK)
self.row += 1 self.row += 1
self.print_report = gtk.CheckButton (_("Open with application")) self.print_report = gtk.CheckButton(_("Open with application"))
self.tbl.attach(self.print_report,2,4,self.row,self.row+1, self.tbl.attach(self.print_report, 2, 4, self.row, self.row+1,
yoptions=gtk.SHRINK) yoptions=gtk.SHRINK)
self.row += 1 self.row += 1
@ -895,13 +896,14 @@ class GraphvizReportDialog(ReportDialog):
self.paper_label = gtk.Label('<b>%s</b>'%_("Paper Options")) self.paper_label = gtk.Label('<b>%s</b>'%_("Paper Options"))
self.paper_label.set_use_markup(True) self.paper_label.set_use_markup(True)
self.paper_frame = PaperFrame(self.options.handler.get_paper_metric(), self.paper_frame = PaperFrame(
self.options.handler.get_paper_name(), self.options.handler.get_paper_metric(),
self.options.handler.get_orientation(), self.options.handler.get_paper_name(),
self.options.handler.get_margins(), self.options.handler.get_orientation(),
self.options.handler.get_custom_paper_size() self.options.handler.get_margins(),
self.options.handler.get_custom_paper_size()
) )
self.notebook.insert_page(self.paper_frame,self.paper_label,0) self.notebook.insert_page(self.paper_frame, self.paper_label, 0)
self.paper_frame.show_all() self.paper_frame.show_all()
ReportDialog.setup_report_options_frame(self) ReportDialog.setup_report_options_frame(self)
@ -923,7 +925,7 @@ class GraphvizReportDialog(ReportDialog):
self.print_report.set_sensitive (False) self.print_report.set_sensitive (False)
fname = self.target_fileentry.get_full_path(0) fname = self.target_fileentry.get_full_path(0)
(spath,ext) = os.path.splitext(fname) (spath, ext) = os.path.splitext(fname)
ext_val = obj.get_ext() ext_val = obj.get_ext()
if ext_val: if ext_val:
@ -957,11 +959,13 @@ class GraphvizReportDialog(ReportDialog):
self.parse_format_frame() self.parse_format_frame()
self.parse_user_options() self.parse_user_options()
self.options.handler.set_paper_metric(self.paper_frame.get_paper_metric()) self.options.handler.set_paper_metric(
self.paper_frame.get_paper_metric())
self.options.handler.set_paper_name(self.paper_frame.get_paper_name()) self.options.handler.set_paper_name(self.paper_frame.get_paper_name())
self.options.handler.set_orientation(self.paper_frame.get_orientation()) self.options.handler.set_orientation(self.paper_frame.get_orientation())
self.options.handler.set_margins(self.paper_frame.get_paper_margins()) self.options.handler.set_margins(self.paper_frame.get_paper_margins())
self.options.handler.set_custom_paper_size(self.paper_frame.get_custom_paper_size()) self.options.handler.set_custom_paper_size(
self.paper_frame.get_custom_paper_size())
# Create the output document. # Create the output document.
self.make_document() self.make_document()