Changeset 7a28ba7 in sasview for guiframe/local_perspectives


Ignore:
Timestamp:
Feb 6, 2009 12:05:31 PM (16 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:
53087f2
Parents:
216efab
Message:

add limite to sector slicer

File:
1 edited

Legend:

Unmodified
Added
Removed
  • guiframe/local_perspectives/plotting/SectorSlicer.py

    rd468daa r7a28ba7  
    115115            self.right_line.update( delta = self.main_line.get_radius(),mline= self.main_line) 
    116116            self.left_line.update( delta = self.main_line.get_radius() ,mline= self.main_line) 
    117             print "Main line has moved ---> phi right",math.degrees(self.main_line.get_radius()+self.right_line.theta) 
    118             print "Main line has moved ---> phi left",math.degrees(self.left_line.theta+self.main_line.get_radius()) 
     117            #print "Main line has moved ---> phi right",math.degrees(self.main_line.get_radius()+self.right_line.theta) 
     118            #print "Main line has moved ---> phi left",math.degrees(self.left_line.theta+self.main_line.get_radius()) 
    119119        if self.left_line.has_move: 
    120             print "left line has moved --->" 
     120            #print "left line has moved --->" 
    121121            self.main_line.update() 
    122122            self.left_line.update(phi=None,delta=None, mline=self.main_line,side=True, left=True) 
    123123            #self.right_line.update(-1*delta,linem=self.main_line,linel=self.left_line) 
    124             self.right_line.update(phi=-1*self.left_line.phi,delta=None, mline=self.main_line,side=True, left=True) 
     124            self.right_line.update(phi=self.left_line.phi,delta=None, mline=self.main_line,side=True,left=False, right=True) 
     125         
    125126        if self.right_line.has_move: 
    126             print "right line has moved --->" 
    127             
     127         
    128128            self.main_line.update() 
    129             self.right_line.update(phi=None,delta=None, mline=self.main_line,side=True, right=True) 
    130             #self.right_line.update(-1*delta,linem=self.main_line,linel=self.left_line) 
    131             self.left_line.update(phi=-1*self.right_line.phi,delta=None, mline=self.main_line,side=True, left=True) 
     129            self.right_line.update(phi=None,delta=None, mline=self.main_line,side=True, left=False,right=True) 
     130            #print "right line has moved --->",self.right_line.phi 
     131            self.left_line.update(phi=self.right_line.phi,delta=None, mline=self.main_line,side=True, left=False) 
    132132    
    133      
     133         
    134134     
    135135 
     
    155155        phimin = self.right_line.theta+math.pi 
    156156        phimax = self.left_line.theta+math.pi 
    157         print "sector Q", radius 
     157        #phimin = min(self.right_line.theta+math.pi,self.left_line.theta+math.pi) 
     158        #phimax = max(self.right_line.theta+math.pi,self.left_line.theta+math.pi) 
     159        print "sector Q",phimin,phimax 
    158160        sect = SectorQ(r_min=0.0, r_max= radius , phi_min=phimin, phi_max=phimax) 
    159161        #sect = SectorQ(r_min=-1*radius , r_max= radius , phi_min=phimin, phi_max=phimax) 
     
    227229            raise ValueError,"Phi left and phi right are different %f, %f"%(self.left_line.phi, self.right_line.phi) 
    228230        params["left_phi"] = math.fabs(self.left_line.phi) 
     231        params["right_phi"] = math.fabs(self.right_line.phi) 
    229232        params["nbins"] = self.nbins 
    230233        return params 
     
    233236         
    234237        main = params["main_phi"]  
    235         phi = params["left_phi"]  
     238        phi = math.fabs(params["left_phi"] ) 
    236239        self.nbins = int(params["nbins"]) 
    237240        self.main_line.theta= main 
    238241         
    239242        self.main_line.update() 
    240         self.right_line.update(phi=-1*phi,delta=None, mline=self.main_line,side=True) 
     243        self.right_line.update(phi=phi,delta=None, mline=self.main_line,side=True,right=True) 
    241244        self.left_line.update(phi=phi,delta=None, mline=self.main_line,side=True) 
    242245        
     
    269272        self.phi = phi 
    270273        self.scale = 10.0 
    271         #print "init for line side theta2, phi, theta",math.degrees(theta2),math.degrees(phi),math.degrees(self.theta)  
    272         #raise "Version error", message 
    273            
    274         # Inner circle 
     274         # Inner circle 
    275275        x1= self.radius*math.cos(self.theta) 
    276276        y1= self.radius*math.sin(self.theta) 
    277277        x2= -1*self.radius*math.cos(self.theta) 
    278278        y2= -1*self.radius*math.sin(self.theta) 
     279         
     280        try: 
     281            # Inner circle marker 
     282            self.inner_marker = self.axes.plot([x1/2],[y1/2], linestyle='', 
     283                                          marker='s', markersize=10, 
     284                                          color=self.color, alpha=0.6, 
     285                                          pickradius=5, label="pick",  
     286                                          zorder=zorder, # Prefer this to other lines 
     287                                          visible=True)[0] 
     288        except: 
     289            self.inner_marker = self.axes.plot([x1/2],[y1/2], linestyle='', 
     290                                          marker='s', markersize=10, 
     291                                          color=self.color, alpha=0.6, 
     292                                          label="pick",  
     293                                          visible=True)[0] 
     294            message  = "\nTHIS PROTOTYPE NEEDS THE LATEST VERSION OF MATPLOTLIB\n" 
     295            message += "Get the SVN version that is at least as recent as June 1, 2007" 
     296             
     297           
     298        
    279299        
    280300        self.line = self.axes.plot([x1,x2],[y1,y2], 
     
    282302                                      color=self.color, 
    283303                                      visible=True)[0] 
    284         
     304        self.left_moving=False 
     305         
    285306        self.npts = 20 
    286307        self.has_move=False 
    287         self.connect_markers([self.line]) 
     308        self.connect_markers([self.inner_marker, self.line]) 
    288309        #self.update() 
    289310 
     
    295316        self.clear_markers() 
    296317        try: 
    297              
    298318            self.line.remove() 
     319            self.inner_marker.remove() 
    299320        except: 
    300321            # Old version of matplotlib 
     
    313334        """ 
    314335        #print "update left or right ", self.has_move 
    315          
     336        self.left_moving=left 
    316337        if phi !=None: 
    317             self.phi = phi 
     338            self.phi= phi 
     339        if  right: 
     340            self.phi = -1*math.fabs(self.phi) 
     341        else: 
     342            self.phi =math.fabs(self.phi) 
    318343        if delta==None: 
    319344            delta = 0 
    320345        if side: 
    321346            self.theta=  mline.theta + self.phi 
    322              
     347         
     348         
    323349             
    324350        if mline!=None: 
     
    334360        y2= -1*self.radius*math.sin(self.theta + delta) 
    335361        
    336          
     362        self.inner_marker.set(xdata=[x1/2],ydata=[y1/2]) 
    337363        self.line.set(xdata=[x1,x2], ydata=[y1,y2])   
    338364         
     
    365391         
    366392        self.theta= math.atan2(y,x) 
    367          
     393        self.has_move=True 
     394        if not self.left_moving: 
     395            if  self.theta >= self.theta2: 
     396                print "my theta", self.theta 
     397                self.restore() 
     398                return  
     399            elif self.theta <= self.theta2 -math.pi/2: 
     400                print "self theta encore" 
     401                self.restore() 
     402                return  
     403        else: 
     404            print "left move" 
     405            if  self.theta <= self.theta2: 
     406                print "my theta", self.theta 
     407                self.restore() 
     408                return  
     409            elif self.theta >= self.theta2 +math.pi/2: 
     410                print "self theta encore" 
     411                self.restore() 
     412                return  
    368413        self.phi= math.fabs(self.theta2 - self.theta) 
    369414         
    370         print "move left or right phi ---theta--thetaM", self.phi, self.theta, self.theta2 
    371         self.has_move=True 
     415        print "move , self.phi, self.theta,", self.theta,self.theta2 -math.pi/2 
     416        
     417             
     418         
    372419        self.base.base.update() 
    373420         
     
    388435        self.set_cursor(x, self._inner_mouse_y) 
    389436         
    390  
    391  
    392          
     437  
    393438         
    394439class LineInteractor(_BaseInteractor): 
     
    412457             
    413458        # Inner circle 
    414  
    415             
    416459        x1= self.radius*math.cos(self.theta) 
    417460        y1= self.radius*math.sin(self.theta) 
    418461        x2= -1*self.radius*math.cos(self.theta) 
    419462        y2= -1*self.radius*math.sin(self.theta) 
     463        try: 
     464            # Inner circle marker 
     465            self.inner_marker = self.axes.plot([x1/2],[y1/2], linestyle='', 
     466                                          marker='s', markersize=10, 
     467                                          color=self.color, alpha=0.6, 
     468                                          pickradius=5, label="pick",  
     469                                          zorder=zorder, # Prefer this to other lines 
     470                                          visible=True)[0] 
     471        except: 
     472            self.inner_marker = self.axes.plot([x1/2],[y1/2], linestyle='', 
     473                                          marker='s', markersize=10, 
     474                                          color=self.color, alpha=0.6, 
     475                                          label="pick",  
     476                                          visible=True)[0] 
     477            message  = "\nTHIS PROTOTYPE NEEDS THE LATEST VERSION OF MATPLOTLIB\n" 
     478            message += "Get the SVN version that is at least as recent as June 1, 2007" 
     479             
    420480        
    421481        self.line = self.axes.plot([x1,x2],[y1,y2], 
     
    426486        self.npts = 20 
    427487        self.has_move=False 
    428         self.connect_markers([self.line]) 
     488        self.connect_markers([self.inner_marker, self.line]) 
    429489        self.update() 
    430490 
     
    436496        self.clear_markers() 
    437497        try: 
    438              
     498            self.inner_marker.remove() 
    439499            self.line.remove() 
    440500        except: 
     
    460520        x2= -1*self.radius*math.cos(self.theta) 
    461521        y2= -1*self.radius*math.sin(self.theta) 
    462        
     522         
     523        self.inner_marker.set(xdata=[x1/2],ydata=[y1/2]) 
    463524        self.line.set(xdata=[x1,x2], ydata=[y1,y2])   
    464525      
Note: See TracChangeset for help on using the changeset viewer.