Ignore:
Timestamp:
Apr 6, 2009 2:56:35 PM (15 years ago)
Author:
Gervaise Alina <gervyh@…>
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, release_4.0.1, ticket-1009, ticket-1094-headless, ticket-1242-2d-resolution, ticket-1243, ticket-1249, ticket885, unittest-saveload
Children:
40f9745
Parents:
ddfcd90
Message:

working on saving page status

File:
1 edited

Legend:

Unmodified
Added
Removed
  • sansview/perspectives/fitting/fitpanel.py

    rdcf29d7 rcfc0913  
    66#import models 
    77_BOX_WIDTH = 80 
    8 (PageInfoEvent, EVT_PAGE_INFO)   = wx.lib.newevent.NewEvent() 
    9  
     8import basepage 
     9 
     10class PageInfo(object): 
     11    """ 
     12        this class contains the minimum numbers of data members 
     13        a fitpage or model page need to be initialized. 
     14    """ 
     15    data = None 
     16    model= None 
     17    manager= None 
     18    event_owner= None 
     19    model_list_box = None 
     20    name=None 
     21     ## Internal name for the AUI manager 
     22    window_name = "Page" 
     23    ## Title to appear on top of the window 
     24    window_caption = "Page" 
     25     
     26    def __init__(self, model=None,data=None, manager=None, 
     27                  event_owner=None,model_list_box=None , name=None): 
     28        """ 
     29            Initialize data members 
     30        """ 
     31        self.data = data 
     32        self.model= model 
     33        self.manager= manager 
     34        self.event_owner= event_owner 
     35        self.model_list_box = model_list_box 
     36        self.name=None 
     37        self.window_name = "Page" 
     38        self.window_caption = "Page" 
     39     
    1040class FitPanel(wx.aui.AuiNotebook):     
    1141 
     
    4272        ##dictionary of page info 
    4373        self.page_info_dict={} 
    44         # save the title of the last page tab added 
    45         self.fit_page_name=[] 
     74        ## save the title of the last page tab added 
     75        self.fit_page_name={} 
     76        ## list of existing fit page 
     77        self.list_fitpage_name=[] 
    4678        self.draw_model_name=None 
    4779        #model page info 
     
    5082        self.model_page=None 
    5183        self.sim_page=None 
     84        ## get the state of a page 
     85        self.Bind(basepage.EVT_PAGE_INFO, self._onGetstate) 
    5286        # increment number for model name 
    5387        self.count=0 
     
    6195             close page and remove all references to the closed page 
    6296        """ 
    63         page_info = self.get_current_page().page_info.clone() 
    64         page_info.page_name = self.get_current_page().page_info.page_name 
     97        state = self.get_current_page().createMemento() 
     98        page_name = self.get_current_page().name 
    6599        page_finder = self.manager.get_page_finder()  
    66100        fitproblem = None 
     
    69103            fitproblem= page_finder[self.get_current_page()] 
    70104             
    71         self.manager._add_page_onmenu(page_info.page_name, page_info, fitproblem) 
     105        self.manager._add_page_onmenu(page_name, fitproblem) 
    72106         
    73107        selected_page = self.GetPage(self.GetSelection()) 
     
    80114             
    81115            #Delete the page from notebook 
    82             if selected_page.name in self.fit_page_name: 
    83                 self.fit_page_name.remove(selected_page.name) 
     116            if selected_page.name in self.list_fitpage_name: 
     117                self.list_fitpage_name.remove(selected_page.name) 
    84118                 
    85119            if selected_page.name== self.draw_model_name: 
     
    139173        return self.sim_page 
    140174         
    141     def add_fit_page( self,data, page_info=None ): 
     175    def add_fit_page( self,data, reset=False ): 
    142176        """  
    143177            Add a fitting page on the notebook contained by fitpanel 
     
    149183        except: 
    150184            name = 'Fit' 
    151         if page_info==None: 
    152             from pageInfo import  PageInfo 
    153             myinfo = PageInfo( self, data=data ) 
     185        if not name in self.list_fitpage_name: 
     186            myinfo = PageInfo( data=data, name=name ) 
    154187            myinfo.model_list_box = self.model_list_box.get_list() 
    155188            myinfo.event_owner = self.event_owner  
    156189            myinfo.manager = self.manager 
    157         else: 
    158             myinfo = page_info 
    159          
    160         if not name in self.fit_page_name : 
     190            myinfo.window_name = "Fit Page" 
     191            myinfo.window_caption = "Fit Page" 
     192         
     193            #if not name in self.fit_page_name : 
    161194            from fitpage import FitPage 
    162             panel = FitPage(parent= self, page_info=myinfo, name=name ) 
    163             panel.name = name 
    164             panel.window_name= "fitpage" 
     195            panel = FitPage(parent= self, page_info=myinfo) 
    165196            self.AddPage(page=panel,caption=name,select=True) 
    166             self.fit_page_name.append(name) 
    167              
     197            self.list_fitpage_name.append(name) 
     198            if reset: 
     199                if name in self.fit_page_name.keys(): 
     200                    memento= self.fit_page_name[name][0] 
     201                    panel.reset_page(memento) 
     202            else: 
     203                self.fit_page_name[name]=[] 
     204                self.fit_page_name[name].insert(0,panel.createMemento()) 
     205          
    168206            return panel  
    169207        else: 
     
    195233                                         npts=npts, page_info=page_info) 
    196234            
     235    def  _onGetstate(self, event): 
     236        """ 
     237            copy the state of a page 
     238        """ 
     239        page= event.page 
     240        if page.name in self.fit_page_name: 
     241            self.fit_page_name[page.name].insert(0,page.createMemento())  
     242             
    197243                 
    198244    def _help_add_model_page(self,model,page_title, qmin=0,  
     
    218264        ## creating object that contaning info about model  
    219265        if page_info==None: 
    220             from pageInfo import  PageInfo 
    221             myinfo = PageInfo( self, model=model) 
     266             
     267            myinfo = PageInfo(model=model ,name=page_title) 
    222268            myinfo.model_list_box = self.model_list_box.get_list() 
    223269            myinfo.event_owner = self.event_owner  
    224270            myinfo.manager = self.manager 
     271            myinfo.window_name = "Model Page" 
     272            myinfo.window_caption = "Model Page" 
    225273        else: 
    226274            myinfo = page_info 
    227275     
    228276        from modelpage import ModelPage 
    229         panel = ModelPage(self,myinfo,page_title) 
     277        panel = ModelPage(self,myinfo) 
    230278        
    231279        self.AddPage(page=panel,caption="Model",select=True) 
    232280 
    233         panel.name = page_title 
    234281        self.draw_model_name=page_title 
    235282        self.model_page_number=self.GetSelection() 
Note: See TracChangeset for help on using the changeset viewer.