Ignore:
Timestamp:
Jun 19, 2017 8:10:07 PM (7 years ago)
Author:
Paul Kienzle <pkienzle@…>
Branches:
master, ESS_GUI, ESS_GUI_Docs, ESS_GUI_batch_fitting, ESS_GUI_bumps_abstraction, ESS_GUI_iss1116, ESS_GUI_iss879, ESS_GUI_iss959, ESS_GUI_opencl, ESS_GUI_ordering, ESS_GUI_sync_sascalc, magnetic_scatt, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
2a0f33f
Parents:
bc04647
Message:

remove wx references from fitting pagestate

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/sas/sasgui/perspectives/fitting/pagestate.py

    r959eb01 r78312f7  
    1515import os 
    1616import sys 
    17 import wx 
    1817import copy 
    1918import logging 
     
    519518        rep = "\nState name: %s\n" % self.file 
    520519        t = time.localtime(self.timestamp) 
    521         time_str = time.strftime("%b %d %Y %H;%M;%S ", t) 
     520        time_str = time.strftime("%b %d %Y %H:%M:%S ", t) 
    522521 
    523522        rep += "State created: %s\n" % time_str 
     
    596595        return rep 
    597596 
    598     def set_report_string(self): 
     597    def _get_report_string(self): 
    599598        """ 
    600599        Get the values (strings) from __str__ for report 
     
    611610        q_range = "" 
    612611        strings = self.__repr__() 
     612        fixed_parameter = False 
    613613        lines = strings.split('\n') 
    614  
    615614        # get all string values from __str__() 
    616615        for line in lines: 
    617             value = "" 
    618             content = line.split(":") 
    619             name = content[0] 
    620             try: 
    621                 value = content[1] 
    622             except Exception: 
    623                 msg = "Report string expected 'name: value' but got %r" % line 
    624                 logger.error(msg) 
    625             if name.count("State created"): 
    626                 repo_time = "" + value 
    627             if name.count("parameter name"): 
     616            # Skip lines which are not key: value pairs, which includes 
     617            # blank lines and freeform notes in SASNotes fields. 
     618            if not ':' in line: 
     619                #msg = "Report string expected 'name: value' but got %r" % line 
     620                #logger.error(msg) 
     621                continue 
     622 
     623            name, value = [s.strip() for s in line.split(":", 1)] 
     624            if name == "State created": 
     625                repo_time = value 
     626            elif name == "parameter name": 
    628627                val_name = value.split(".") 
    629628                if len(val_name) > 1: 
     
    634633                else: 
    635634                    param_string += value + ',' 
    636             if name == "value": 
     635            elif name == "value": 
    637636                param_string += value + ',' 
    638             fixed_parameter = False 
    639             if name == "selected": 
    640                 if value == u' False': 
    641                     fixed_parameter = True 
    642             if name == "error value": 
     637            elif name == "selected": 
     638                # remember if it is fixed when reporting error value 
     639                fixed_parameter = (value == u'False') 
     640            elif name == "error value": 
    643641                if fixed_parameter: 
    644642                    param_string += '(fixed),' 
    645643                else: 
    646644                    param_string += value + ',' 
    647             if name == "parameter unit": 
     645            elif name == "parameter unit": 
    648646                param_string += value + ':' 
    649             if name == "Value of Chisqr ": 
     647            elif name == "Value of Chisqr": 
    650648                chi2 = ("Chi2/Npts = " + value) 
    651649                chi2_string = CENTRE % chi2 
    652             if name == "Title": 
     650            elif name == "Title": 
    653651                if len(value.strip()) == 0: 
    654652                    continue 
    655653                title = value + " [" + repo_time + "]" 
    656654                title_name = HEADER % title 
    657             if name == "data ": 
     655            elif name == "data": 
    658656                try: 
    659                     file_value = ("File name:" + content[2]) 
     657                    # parsing "data : File:     filename [mmm dd hh:mm]" 
     658                    name = value.split(':', 1)[1].strip() 
     659                    file_value = "File name:" + name 
    660660                    file_name = CENTRE % file_value 
    661661                    if len(title) == 0: 
    662                         title = content[2] + " [" + repo_time + "]" 
     662                        title = name + " [" + repo_time + "]" 
    663663                        title_name = HEADER % title 
    664664                except Exception: 
    665665                    msg = "While parsing 'data: ...'\n" 
    666666                    logger.error(msg + traceback.format_exc()) 
    667             if name == "model name ": 
     667            elif name == "model name": 
    668668                try: 
    669                     modelname = "Model name:" + content[1] 
    670                 except: 
     669                    modelname = "Model name:" + value 
     670                except Exception: 
    671671                    modelname = "Model name:" + " NAN" 
    672672                model_name = CENTRE % modelname 
    673673 
    674             if name == "Plotting Range": 
     674            elif name == "Plotting Range": 
    675675                try: 
    676                     q_range = content[1] + " = " + content[2] \ 
    677                             + " = " + content[3].split(",")[0] 
     676                    parts = value.split(':') 
     677                    q_range = parts[0] + " = " + parts[1] \ 
     678                            + " = " + parts[2].split(",")[0] 
    678679                    q_name = ("Q Range:    " + q_range) 
    679680                    q_range = CENTRE % q_name 
     
    681682                    msg = "While parsing 'Plotting Range: ...'\n" 
    682683                    logger.error(msg + traceback.format_exc()) 
     684 
    683685        paramval = "" 
    684686        for lines in param_string.split(":"): 
     
    709711                                   "\n" + paramval_string + \ 
    710712                                   "\n" + ELINE + \ 
    711                                    "\n" + FEET_1 % title + \ 
    712                                    "\n" + FEET_2 
     713                                   "\n" + FEET_1 % title 
    713714 
    714715        return html_string, text_string, title 
     
    723724        return name 
    724725 
    725     def report(self, figs=None, canvases=None): 
     726    def report(self, fig_urls): 
    726727        """ 
    727728        Invoke report dialog panel 
     
    729730        : param figs: list of pylab figures [list] 
    730731        """ 
    731         from sas.sasgui.perspectives.fitting.report_dialog import ReportDialog 
    732732        # get the strings for report 
    733         html_str, text_str, title = self.set_report_string() 
     733        html_str, text_str, title = self._get_report_string() 
    734734        # Allow 2 figures to append 
    735         if len(figs) == 1: 
    736             add_str = FEET_3 
    737         elif len(figs) == 2: 
    738             add_str = ELINE 
    739             add_str += FEET_2 % ("%s") 
    740             add_str += ELINE 
    741             add_str += FEET_3 
    742         elif len(figs) > 2: 
    743             add_str = ELINE 
    744             add_str += FEET_2 % ("%s") 
    745             add_str += ELINE 
    746             add_str += FEET_2 % ("%s") 
    747             add_str += ELINE 
    748             add_str += FEET_3 
    749         else: 
    750             add_str = "" 
     735        image_links = [FEET_2%fig for fig in fig_urls] 
    751736 
    752737        # final report html strings 
    753         report_str = html_str % ("%s") + add_str 
    754  
    755         # make plot image 
    756         images = self.set_plot_state(figs, canvases) 
    757         report_list = [report_str, text_str, images] 
    758         dialog = ReportDialog(report_list, None, wx.ID_ANY, "") 
    759         dialog.Show() 
     738        report_str = html_str + ELINE.join(image_links) 
     739 
     740        return report_str, text_str 
    760741 
    761742    def _to_xml_helper(self, thelist, element, newdoc): 
     
    805786            try: 
    806787                top_element = newdoc.createElement(FITTING_NODE_NAME) 
    807             except: 
     788            except Exception: 
    808789                string = etree.tostring(doc, pretty_print=True) 
    809790                newdoc = parseString(string) 
     
    814795                try: 
    815796                    entry_node.appendChild(top_element) 
    816                 except: 
     797                except Exception: 
    817798                    node_name = entry_node.tag 
    818799                    node_list = newdoc.getElementsByTagName(node_name) 
     
    10361017                try: 
    10371018                    self.timestamp = float(entry.get('epoch')) 
    1038                 except: 
     1019                except Exception: 
    10391020                    msg = "PageState.fromXML: Could not" 
    10401021                    msg += " read timestamp\n %s" % sys.exc_value 
     
    11041085                        dic[name] = np.array(value_list) 
    11051086                    setattr(self, varname, dic) 
    1106  
    1107     def set_plot_state(self, figs, canvases): 
    1108         """ 
    1109         Build image state that wx.html understand 
    1110         by plotting, putting it into wx.FileSystem image object 
    1111  
    1112         """ 
    1113         images = [] 
    1114  
    1115         # Reset memory 
    1116         self.imgRAM = None 
    1117         wx.MemoryFSHandler() 
    1118  
    1119         # For no figures in the list, prepare empty plot 
    1120         if figs is None or len(figs) == 0: 
    1121             figs = [None] 
    1122  
    1123         # Loop over the list of figures 
    1124         # use wx.MemoryFSHandler 
    1125         self.imgRAM = wx.MemoryFSHandler() 
    1126         for fig in figs: 
    1127             if fig is not None: 
    1128                 ind = figs.index(fig) 
    1129                 canvas = canvases[ind] 
    1130  
    1131             # store the image in wx.FileSystem Object 
    1132             wx.FileSystem.AddHandler(wx.MemoryFSHandler()) 
    1133  
    1134             # index of the fig 
    1135             ind = figs.index(fig) 
    1136  
    1137             # AddFile, image can be retrieved with 'memory:filename' 
    1138             self.imgRAM.AddFile('img_fit%s.png' % ind, 
    1139                                 canvas.bitmap, wx.BITMAP_TYPE_PNG) 
    1140  
    1141             # append figs 
    1142             images.append(fig) 
    1143  
    1144         return images 
    11451087 
    11461088 
     
    14101352        return doc 
    14111353 
    1412 # Simple html report templet 
     1354# Simple html report template 
    14131355HEADER = "<html>\n" 
    14141356HEADER += "<head>\n" 
     
    14381380""" 
    14391381FEET_2 = \ 
    1440 """ 
    1441 <img src="%s" > 
    1442 </img> 
     1382"""<img src="%s" ></img> 
    14431383""" 
    14441384FEET_3 = \ 
    1445 """ 
    1446 </center> 
     1385"""</center> 
    14471386</div> 
    14481387</body> 
    14491388</html> 
    14501389""" 
    1451 ELINE = "<p class=MsoNormal>&nbsp;</p>" 
     1390ELINE = """<p class=MsoNormal>&nbsp;</p> 
     1391""" 
Note: See TracChangeset for help on using the changeset viewer.