source: sasview/sansview/perspectives/fitting/pagestate.py @ 05971e1

ESS_GUIESS_GUI_DocsESS_GUI_batch_fittingESS_GUI_bumps_abstractionESS_GUI_iss1116ESS_GUI_iss879ESS_GUI_iss959ESS_GUI_openclESS_GUI_orderingESS_GUI_sync_sascalccostrafo411magnetic_scattrelease-4.1.1release-4.1.2release-4.2.2release_4.0.1ticket-1009ticket-1094-headlessticket-1242-2d-resolutionticket-1243ticket-1249ticket885unittest-saveload
Last change on this file since 05971e1 was dad49a0, checked in by Gervaise Alina <gervyh@…>, 15 years ago

working on save option

  • Property mode set to 100644
File size: 5.5 KB
RevLine 
[c77d859]1
2
[6f023e8]3import copy
[c77d859]4
[cfc0913]5class PageState(object):
[c77d859]6    """
7        Contains info to reconstruct a page
8    """
9    def __init__(self, parent,model=None, data=None):
10       
11        """
12            Initialization of the Panel
13        """
14        #TODO: remove this once the inheritence is cleaned up
15        ## Data member to store the dispersion object created
16        self._disp_obj_dict = {}
[cfc0913]17        ## reset True change the state of exsiting button
18        self.reset = False
[c77d859]19        #Data used for fitting
20        self.data = data
21        # flag to allow data2D plot
[cfc0913]22        self.enable2D = False
[c77d859]23        # model on which the fit would be performed
24        self.model = model
[dad49a0]25        if not hasattr(self.model, "_persistency_dict"):
26            self.model._persistency_dict = {}
[c77d859]27        #fit page manager
28        self.manager = None
29        #Store the parent of this panel parent
30        # For this application fitpanel is the parent
31        self.parent  = parent
32        # Event_owner is the owner of model event
33        self.event_owner = None
[c9a4377]34        ##page name
[cfc0913]35        self.page_name = ""
[c77d859]36        # Contains link between  model ,all its parameters, and panel organization
[cfc0913]37        self.parameters =[]
[c77d859]38        # Contains list of parameters that cannot be fitted and reference to
39        #panel objects
[cfc0913]40        self.fixed_param =[]
[c77d859]41        # Contains list of parameters with dispersity and reference to
42        #panel objects
[cfc0913]43        self.fittable_param =[]
[60132ef]44        ## orientation parameters
45        self.orientation_params=[]
[fc6ea43]46        ## orientation parmaters for gaussian dispersity
47        self.orientation_params_disp=[]
[3370922]48        ## smearer info
49        self.smearer=None
[c77d859]50        #list of dispersion paramaters
[cfc0913]51        self.disp_list =[]
[c477b31]52        self._disp_obj_dict={}
53        self.disp_cb_dict={}
[dad49a0]54        self.values=[]
55        self.weights=[]
56                   
[c77d859]57        #contains link between a model and selected parameters to fit
[cfc0913]58        self.param_toFit =[]
[a074145]59        ##dictionary of model type and model class
[cfc0913]60        self.model_list_box = None
[a074145]61        ## save the state of the context menu
62        self.saved_states={}
[c77d859]63        ## save  current value of combobox
64        self.formfactorcombobox = ""
65        self.structurecombobox  = ""
[b787e68c]66        ## the indice of the current selection
67        self.disp_box = 0
[c77d859]68        ## Qrange
[cfc0913]69        ## Q range
70        self.qmin= 0.001
71        self.qmax= 0.1
72        self.npts = None
73        ## enable smearering state
74        self.enable_smearer = False
[fc6ea43]75        self.disable_smearer = True
[cfc0913]76        ## disperity selection
77        self.enable_disp= False
[fc6ea43]78        self.disable_disp= True
[c477b31]79        ## plot 2D data
80        self.enable2D= False
[cfc0913]81        ## state of selected all check button
82        self.cb1 = False
[c9a4377]83       
[cfc0913]84   
85    def save_data(self, data):
[c77d859]86        """
[cfc0913]87            Save data
[c77d859]88        """
[cfc0913]89        self.data = copy.deepcopy(data)
[b787e68c]90
[cfc0913]91       
[6f023e8]92    def clone(self):
93        model=None
94        if self.model !=None:
95            model = self.model.clone()
96       
[cfc0913]97        obj          = PageState( self.parent,model= model )
[6f023e8]98        obj.data = copy.deepcopy(self.data)
[dcf29d7]99        obj.model_list_box = copy.deepcopy(self.model_list_box)
100        obj.manager = self.manager
101        obj.event_owner = self.event_owner
[fc6ea43]102       
[c477b31]103        obj.enable2D = copy.deepcopy(self.enable2D)
[cfc0913]104        obj.parameters = copy.deepcopy(self.parameters)
105        obj.fixed_param = copy.deepcopy(self.fixed_param)
106        obj.fittable_param = copy.deepcopy(self.fittable_param)
[60132ef]107        obj.orientation_params =  copy.deepcopy(self.orientation_params)
[fc6ea43]108        obj.orientation_params_disp =  copy.deepcopy(self.orientation_params_disp)
109       
[b787e68c]110        obj.enable_disp = copy.deepcopy(self.enable_disp)
[fc6ea43]111        obj.disable_disp = copy.deepcopy(self.disable_disp)
[dad49a0]112        if len(self.model._persistency_dict)>0:
113            for k, v in self.model._persistency_dict.iteritems():
114                obj.model._persistency_dict[k] = copy.deepcopy(v)
[c477b31]115        if len(self._disp_obj_dict)>0:
116            for k , v in self._disp_obj_dict.iteritems():
117                obj._disp_obj_dict[k]= v
[dad49a0]118        if len(self.disp_cb_dict)>0:
119            for k , v in self.disp_cb_dict.iteritems():
120                obj.disp_cb_dict[k]= v
121        obj.values = copy.deepcopy(self.values)
122        obj.weights = copy.deepcopy(self.weights)
[b787e68c]123        obj.enable_smearer = copy.deepcopy(self.enable_smearer)
[fc6ea43]124        obj.disable_smearer = copy.deepcopy(self.disable_smearer)
125       
[b787e68c]126        obj.disp_box = copy.deepcopy(self.disp_box)
127        obj.qmin = copy.deepcopy(self.qmin)
128        obj.qmax = copy.deepcopy(self.qmax)
129        obj.npts = copy.deepcopy(self.npts )
130        obj.cb1 = copy.deepcopy(self.cb1)
[3370922]131        obj.smearer = copy.deepcopy(self.smearer)
132       
[a074145]133        for name, state in self.saved_states.iteritems():
134            copy_name = copy.deepcopy(name)
135            copy_state = state.clone()
136            obj.saved_states[copy_name]= copy_state
[6f023e8]137        return obj
[c77d859]138
[cfc0913]139class PageMemento(object):
140    """
141        Store the state of a fitpage or model page of fitpanel
142    """
143    def __init__(self, state):
144        """ Initialization"""
145        self.state = state
146       
147    def setState(self,state):
148        """
149            set current state
150            @param state: new state
151        """
152        self.state = state
153       
154    def getState(self):
155        """
156            @return state
157        """
158        return self.state
159       
160       
161       
[c77d859]162       
Note: See TracBrowser for help on using the repository browser.