Ignore:
Timestamp:
Oct 7, 2016 2:05:57 PM (8 years ago)
Author:
krzywon
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, costrafo411, magnetic_scatt, release-4.1.1, release-4.1.2, release-4.2.2, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
b61bd57
Parents:
e6de6b8 (diff), 48b8f6d (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the (diff) links above to see all the changes relative to each parent.
Message:

Merge branch 'master' into wx_save_simfit

File:
1 edited

Legend:

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

    r05228b0 re6de6b8  
    1010 
    1111from sas.sasgui.guiframe.panel_base import PanelBase 
    12 from sas.sasgui.guiframe.events import PanelOnFocusEvent 
    13 from sas.sasgui.guiframe.events import StatusEvent 
     12from sas.sasgui.guiframe.events import PanelOnFocusEvent, StatusEvent 
    1413from sas.sasgui.guiframe.dataFitting import check_data_validity 
     14from sas.sasgui.perspectives.fitting.simfitpage import SimultaneousFitPage 
    1515 
    1616import basepage 
     
    1818_BOX_WIDTH = 80 
    1919 
     20 
    2021class FitPanel(nb, PanelBase): 
    2122    """ 
     
    2627 
    2728    """ 
    28     ## Internal name for the AUI manager 
     29    # Internal name for the AUI manager 
    2930    window_name = "Fit panel" 
    30     ## Title to appear on top of the window 
     31    # Title to appear on top of the window 
    3132    window_caption = "Fit Panel " 
    3233    CENTER_PANE = True 
     
    4041                    wx.CLIP_CHILDREN) 
    4142        PanelBase.__init__(self, parent) 
    42         #self.SetWindowStyleFlag(style=nb.FNB_FANCY_TABS) 
     43        # self.SetWindowStyleFlag(style=nb.FNB_FANCY_TABS) 
    4344        self._manager = manager 
    4445        self.parent = parent 
    4546        self.event_owner = None 
    46         #dictionary of miodel {model class name, model class} 
     47        # dictionary of miodel {model class name, model class} 
    4748        self.menu_mng = models.ModelManager() 
    4849        self.model_list_box = self.menu_mng.get_model_list() 
    49         #pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING 
     50        # pageClosedEvent = nb.EVT_FLATNOTEBOOK_PAGE_CLOSING 
    5051        self.model_dictionary = self.menu_mng.get_model_dictionary() 
    5152        self.pageClosedEvent = wx.aui.EVT_AUINOTEBOOK_PAGE_CLOSE 
    5253 
    5354        self.Bind(self.pageClosedEvent, self.on_close_page) 
    54         ## save the title of the last page tab added 
     55        # save the title of the last page tab added 
    5556        self.fit_page_name = {} 
    56         ## list of existing fit page 
     57        # list of existing fit page 
    5758        self.opened_pages = {} 
    58         #index of fit page 
     59        # index of fit page 
    5960        self.fit_page_index = 0 
    60         #index of batch page 
     61        # index of batch page 
    6162        self.batch_page_index = 0 
    62         #page of simultaneous fit 
     63        # page of simultaneous fit 
    6364        self.sim_page = None 
    6465        self.batch_page = None 
    65         ## get the state of a page 
     66        # get the state of a page 
    6667        self.Bind(basepage.EVT_PAGE_INFO, self._onGetstate) 
    6768        self.Bind(basepage.EVT_PREVIOUS_STATE, self._onUndo) 
     
    8081        """ 
    8182        return an xml node containing state of the panel 
    82          that guiframe can write to file 
    83         """ 
    84         msg = "" 
     83        that guiframe can write to file 
     84        """ 
     85        # Iterate through all pages and check for batch fitting 
     86        batch_state = None 
     87        if self.sim_page is not None: 
     88            batch_state = self.sim_page.set_state() 
     89 
    8590        for uid, page in self.opened_pages.iteritems(): 
    86             if page.batch_on: 
    87                 pos = self.GetPageIndex(page) 
    88                 if pos != -1 and page not in [self.sim_page, self.batch_page]: 
    89                     msg += "%s .\n" % str(self.GetPageText(pos)) 
    90             else: 
    91                 data = page.get_data() 
    92                 # state must be cloned 
    93                 state = page.get_state().clone() 
    94                 if data is not None and page.model is not None: 
    95                     new_doc = self._manager.state_reader.write_toXML(data, 
    96                                                                      state) 
    97                     if doc != None and hasattr(doc, "firstChild"): 
    98                         child = new_doc.firstChild.firstChild 
    99                         doc.firstChild.appendChild(child) 
    100                     else: 
    101                         doc = new_doc 
    102         if msg.strip() != "": 
    103             temp = "Save Project is not supported for Batch page.\n" 
    104             temp += "The following pages will not be save:\n" 
    105             message = temp + msg 
    106             wx.PostEvent(self._manager.parent, StatusEvent(status=message, 
    107                                                             info="warning")) 
     91            data = page.get_data() 
     92            # state must be cloned 
     93            state = page.get_state().clone() 
     94            if data is not None or page.model is not None: 
     95                new_doc = self._manager.state_reader.write_toXML(data, 
     96                                                                 state, 
     97                                                                 batch_state) 
     98                if doc is not None and hasattr(doc, "firstChild"): 
     99                    child = new_doc.firstChild.firstChild 
     100                    doc.firstChild.appendChild(child) 
     101                else: 
     102                    doc = new_doc 
     103 
    108104        return doc 
    109105 
     
    179175    def get_state(self): 
    180176        """ 
    181          return the state of the current selected page 
     177        return the state of the current selected page 
    182178        """ 
    183179        pos = self.GetSelection() 
     
    191187        """ 
    192188 
    193         #get number of pages 
     189        # get number of pages 
    194190        nop = self.GetPageCount() 
    195         #use while-loop, for-loop will not do the job well. 
     191        # use while-loop, for-loop will not do the job well. 
    196192        while (nop > 0): 
    197             #delete the first page until no page exists 
     193            # delete the first page until no page exists 
    198194            page = self.GetPage(0) 
    199195            if self._manager.parent.panel_on_focus == page: 
     
    201197            self._close_helper(selected_page=page) 
    202198            self.DeletePage(0) 
    203             nop = nop - 1 
    204  
    205         ## save the title of the last page tab added 
     199            nop = self.GetPageCount() 
     200        # Clear list of names 
    206201        self.fit_page_name = {} 
    207         ## list of existing fit page 
     202        # Clear list of opened pages 
    208203        self.opened_pages = {} 
     204        self.fit_page_index = 0 
     205        self.batch_page_index = 0 
    209206 
    210207    def set_state(self, state): 
     
    215212        if state is not None: 
    216213            for uid, panel in self.opened_pages.iteritems(): 
    217                 #Don't return any panel is the exact same page is created 
     214                # Don't return any panel is the exact same page is created 
    218215                if uid == panel.uid and panel.data == state.data: 
    219216                    # the page is still opened 
     
    223220            if not page_is_opened: 
    224221                if state.data.__class__.__name__ != 'list': 
    225                     #To support older state file format 
     222                    # To support older state file format 
    226223                    list_data = [state.data] 
    227224                else: 
    228                     #Todo: need new file format for the list 
     225                    # Todo: need new file format for the list 
    229226                    list_data = state.data 
    230227                panel = self._manager.add_fit_page(data=list_data) 
     
    241238        Clear and close all panels, used by guimanager 
    242239        """ 
    243  
    244         #close all panels only when svs file opened 
     240        # close all panels only when svs file opened 
    245241        self.close_all() 
    246242        self._manager.mypanels = [] 
     243        self.sim_page = None 
     244        self.batch_page = None 
    247245 
    248246    def on_close_page(self, event=None): 
     
    253251        selected_page = self.GetPage(self.GetSelection()) 
    254252        if nbr_page == 1: 
    255             if selected_page.get_data() == None: 
     253            if selected_page.get_data() is not None: 
    256254                if event is not None: 
    257255                    event.Veto() 
     
    271269 
    272270                if data is None: 
    273                     #the fitpanel exists and only the initial fit page is open 
    274                     #with no selected data 
     271                    # the fitpanel exists and only the initial fit page is open 
     272                    # with no selected data 
    275273                    return 
    276274                if data.id == deleted_data.id: 
     
    284282 
    285283        :param manager: instance of plugin fitting 
    286  
    287284        """ 
    288285        self._manager = manager 
     
    333330        else: 
    334331            self.batch_page = SimultaneousFitPage(self, batch_on=True, 
    335                                                    page_finder=page_finder) 
     332                                                  page_finder=page_finder) 
    336333            self.batch_page.window_caption = caption 
    337334            self.batch_page.window_name = caption 
     
    346343        add an empty page 
    347344        """ 
    348         """ 
    349345        if self.batch_on: 
    350346            from batchfitpage import BatchFitPage 
    351             panel = BatchFitPage(parent=self) 
    352             #Increment index of batch page 
    353             self.batch_page_index += 1 
    354             index = self.batch_page_index 
    355         else: 
    356         """ 
    357         from fitpage import FitPage 
    358         from batchfitpage import BatchFitPage 
    359         if self.batch_on: 
    360347            panel = BatchFitPage(parent=self) 
    361348            self.batch_page_index += 1 
     
    363350            panel.set_index_model(self.batch_page_index) 
    364351        else: 
    365             #Increment index of fit page 
     352            # Increment index of fit page 
     353            from fitpage import FitPage 
    366354            panel = FitPage(parent=self) 
    367355            self.fit_page_index += 1 
     
    441429        page = None 
    442430        for p in self.opened_pages.values(): 
    443             #check if there is an empty page to fill up 
     431            # check if there is an empty page to fill up 
    444432            if not check_data_validity(p.get_data()) and p.batch_on: 
    445433 
    446                 #make sure data get placed in 1D empty tab if data is 1D 
    447                 #else data get place on 2D tab empty tab 
     434                # make sure data get placed in 1D empty tab if data is 1D 
     435                # else data get place on 2D tab empty tab 
    448436                enable2D = p.get_view_mode() 
    449437                if (data.__class__.__name__ == "Data2D" and enable2D)\ 
     
    458446                data_type = dlg.get_data() 
    459447                dlg.Destroy() 
    460                 if page  is None: 
     448                if page is None: 
    461449                    page = self.add_empty_page() 
    462450                if data_type == 1: 
    463                     #user has selected only data1D 
     451                    # user has selected only data1D 
    464452                    page.fill_data_combobox(data_1d_list) 
    465453                elif data_type == 2: 
    466454                    page.fill_data_combobox(data_2d_list) 
    467455            else: 
    468                 #the batch analysis is canceled 
     456                # the batch analysis is canceled 
    469457                dlg.Destroy() 
    470458                return None 
     
    503491            try: 
    504492                data = data_list[0] 
    505             except: 
     493            except Exception: 
    506494                # for 'fitv' files 
    507495                data_list = [data] 
     
    511499                return None 
    512500        for page in self.opened_pages.values(): 
    513             #check if the selected data existing in the fitpanel 
     501            # check if the selected data existing in the fitpanel 
    514502            pos = self.GetPageIndex(page) 
    515503            if not check_data_validity(page.get_data()) and not page.batch_on: 
    516                 #make sure data get placed in 1D empty tab if data is 1D 
    517                 #else data get place on 2D tab empty tab 
     504                # make sure data get placed in 1D empty tab if data is 1D 
     505                # else data get place on 2D tab empty tab 
    518506                enable2D = page.get_view_mode() 
    519507                if (data.__class__.__name__ == "Data2D" and enable2D)\ 
    520                 or (data.__class__.__name__ == "Data1D" and not enable2D): 
     508                   or (data.__class__.__name__ == "Data1D" and not enable2D): 
    521509                    page.batch_on = self.batch_on 
    522510                    page._set_save_flag(not page.batch_on) 
    523511                    page.fill_data_combobox(data_list) 
    524                     #caption = "FitPage" + str(self.fit_page_index) 
     512                    # caption = "FitPage" + str(self.fit_page_index) 
    525513                    self.SetPageText(pos, page.window_caption) 
    526514                    self.SetSelection(pos) 
    527515                    return page 
    528         #create new page and add data 
     516        # create new page and add data 
    529517        page = self.add_empty_page() 
    530518        pos = self.GetPageIndex(page) 
     
    574562        Delete the given page from the notebook 
    575563        """ 
    576         #remove hint page 
    577         #if selected_page == self.hint_page: 
     564        # remove hint page 
     565        # if selected_page == self.hint_page: 
    578566        #    return 
    579         ## removing sim_page 
     567        # removing sim_page 
    580568        if selected_page == self.sim_page: 
    581569            self._manager.sim_page = None 
     
    584572            self._manager.batch_page = None 
    585573            return 
    586         """ 
    587         # The below is not working when delete #5 and still have #6. 
    588         if selected_page.__class__.__name__ == "FitPage": 
    589             self.fit_page_index -= 1 
    590         else: 
    591             self.batch_page_index -= 1 
    592         """ 
    593         ## closing other pages 
     574        # closing other pages 
    594575        state = selected_page.createMemento() 
    595576        page_finder = self._manager.get_page_finder() 
    596         ## removing fit page 
     577        # removing fit page 
    597578        data = selected_page.get_data() 
    598         #Don' t remove plot for 2D 
     579        # Don' t remove plot for 2D 
    599580        flag = True 
    600581        if data.__class__.__name__ == 'Data2D': 
    601582            flag = False 
    602583        if selected_page in page_finder: 
    603             #Delete the name of the page into the list of open page 
     584            # Delete the name of the page into the list of open page 
    604585            for uid, list in self.opened_pages.iteritems(): 
    605                 #Don't return any panel is the exact same page is created 
    606  
     586                # Don't return any panel is the exact same page is created 
    607587                if flag and selected_page.uid == uid: 
    608588                    self._manager.remove_plot(uid, theory=False) 
     
    610590            del page_finder[selected_page] 
    611591 
    612         #Delete the name of the page into the list of open page 
     592        # Delete the name of the page into the list of open page 
    613593        for uid, list in self.opened_pages.iteritems(): 
    614             #Don't return any panel is the exact same page is created 
     594            # Don't return any panel is the exact same page is created 
    615595            if selected_page.uid == uid: 
    616596                del self.opened_pages[selected_page.uid] 
    617597                break 
    618         ##remove the check box link to the model name of this page (selected_page) 
     598        # remove the check box link to the model name of the selected_page 
    619599        try: 
    620600            self.sim_page.draw_page() 
    621601        except: 
    622             ## that page is already deleted no need to remove check box on 
    623             ##non existing page 
     602            # that page is already deleted no need to remove check box on 
     603            # non existing page 
    624604            pass 
    625605        try: 
    626606            self.batch_page.draw_page() 
    627607        except: 
    628             ## that page is already deleted no need to remove check box on 
    629             ##non existing page 
     608            # that page is already deleted no need to remove check box on 
     609            # non existing page 
    630610            pass 
Note: See TracChangeset for help on using the changeset viewer.