################################################################################ #This software was developed by the University of Tennessee as part of the #Distributed Data Analysis of Neutron Scattering Experiments (DANSE) #project funded by the US National Science Foundation. # #See the license text in license.txt # #copyright 2009, University of Tennessee ################################################################################ """ Dialog report panel to show and summarize the results of the invariant calculation. """ import wx import os import wx.html as html from sas.guiframe.report_dialog import BaseReportDialog class ReportDialog(BaseReportDialog): """ The report dialog box. """ def __init__(self, report_list, *args, **kwds): """ Initialization. The parameters added to Dialog are: :param report_list: list of html_str, text_str, image from invariant_state """ super(ReportDialog, self).__init__(report_list, *args, **kwds) # title self.SetTitle("Report: Invariant computaion") # put image path in the report string self.report_html = self.report_list[0] % "memory:img_inv.png" # layout self._setup_layout() def onSave(self, event=None): """ Save """ #todo: complete saving fig file and as a txt file dlg = wx.FileDialog(self, "Choose a file", wildcard=self.wild_card, style=wx.SAVE|wx.OVERWRITE_PROMPT|wx.CHANGE_DIR) dlg.SetFilterIndex(0) #Set .html files to be default if dlg.ShowModal() != wx.ID_OK: dlg.Destroy() return fName = dlg.GetPath() ext_num = dlg.GetFilterIndex() #set file extensions if ext_num == (0 + 2 * self.index_offset): # TODO: Sort this case out ext = '.pdf' img_ext = '_img.png' fName = os.path.splitext(fName)[0] + ext dlg.Destroy() #pic (png) file path/name pic_fname = os.path.splitext(fName)[0] + img_ext # save the image for use with pdf writer self.report_list[2].savefig(pic_fname) # put the image file path in the html data html = self.report_list[0] % str(pic_fname) # make/open file in case of absence f = open(fName, 'w') f.close() # write pdf as a pdf file pdf = self.HTML2PDF(data=html, filename=fName) #open pdf if pdf: try: #Windows os.startfile(str(fName)) except: try: #Mac os.system("open %s"% fName) except: #DO not open pass #delete image file os.remove(pic_fname) return elif ext_num == (1 - self.index_offset): ext = '.html' img_ext = '_img4html.png' report_frame = self.report_list[0] elif ext_num == (2 - self.index_offset): ext = '.txt' # changing the image extension actually changes the image # format on saving img_ext = '_img4txt.pdf' report = self.report_list[1] else: return #file name fName = os.path.splitext(fName)[0] + ext dlg.Destroy() #pic (png) file path/name pic_fname = os.path.splitext(fName)[0] + img_ext #put the image path in html string if ext_num == (1 - self.index_offset): report = report_frame % os.path.basename(pic_fname) f = open(fName, 'w') f.write(report) f.close() #save png file using pic_fname self.report_list[2].savefig(pic_fname)