Changeset 87 for trunk/GSASIIplot.py


Ignore:
Timestamp:
Jun 15, 2010 1:21:20 PM (12 years ago)
Author:
vondreel
Message:

"Spots" in Masks is really "Points"
Start of "points" for masks

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIplot.py

    r85 r87  
    1111import GSASIIIO as G2IO
    1212import GSASIIpwdGUI as G2pdG
     13import GSASIIimgGUI as G2imG
    1314from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as Canvas
    1415from matplotlib.backends.backend_wxagg import NavigationToolbar2Wx as Toolbar
     
    4950        self.status = parent.CreateStatusBar()
    5051        self.status.SetFieldsCount(2)
    51         self.status.SetStatusWidths([-1,120])
     52        self.status.SetStatusWidths([125,-1])
    5253        self.Bind(wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED, self.OnPageChanged)
    5354       
     
    99100        print i
    100101        HKLtxt = '(%3d,%3d,%3d %10.2f %6.3f %10.2f)'%(h,k,l,Fosq,sig,Fcsq)
    101         self.G2plotNB.status.SetFields(['HKL, Fosq, sig, Fcsq = '+HKLtxt,''])
     102        self.G2plotNB.status.SetFields(['','HKL, Fosq, sig, Fcsq = '+HKLtxt])
    102103                         
    103104       
     
    272273                if abs(xpos) > 0.:                  #avoid possible singularity at beam center
    273274                    dsp = wave/(2.*sind(abs(xpos)/2.0))
    274                 self.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),0)
     275                self.G2plotNB.status.SetStatusText('2-theta =%9.3f d =%9.5f Intensity =%9.1f'%(xpos,dsp,ypos),1)
    275276                if self.itemPicked:
    276277                    Page.canvas.SetToolTipString('%9.3f'%(xpos))
    277278            except TypeError:
    278                 self.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',0)
     279                self.G2plotNB.status.SetStatusText('Select PWDR powder pattern first',1)
    279280                                   
    280281    def OnRelease(event):
     
    325326        choices=(' key press','d: offset down','u: offset up','c: toggle contour','s: toggle single plot'))
    326327    cb.Bind(wx.EVT_COMBOBOX, OnKeyBox)
    327     rect = self.G2plotNB.status.GetFieldRect(1)
    328     cb.SetPosition((rect.x,rect.y))
    329328    cb.SetValue(' key press')
    330329   
     
    433432        if xpos:                                        #avoid out of frame mouse position
    434433            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    435             self.G2plotNB.status.SetFields(['2-theta =%9.3f '%(xpos,),''])
     434            self.G2plotNB.status.SetFields(['','2-theta =%9.3f '%(xpos,)])
    436435
    437436    try:
     
    562561
    563562def PlotImage(self,newPlot=False):
    564     from matplotlib.patches import Ellipse,Arc
     563    from matplotlib.patches import Ellipse,Arc,Circle
    565564    import numpy.ma as ma
    566565
     
    569568        size = len(self.ImageZ)
    570569        if event.xdata and event.ydata:                 #avoid out of frame errors
    571             Data = self.PatternTree.GetItemPyData( \
    572                 G2gd.GetPatternTreeItemId(self,self.Image, 'Image Controls'))
    573570            Page.canvas.SetCursor(wx.CROSS_CURSOR)
    574571            item = self.itemPicked
     
    597594                if (0 <= xpix <= size) and (0 <= ypix <= size):
    598595                    Int = self.ImageZ[ypix][xpix]
    599 #                    Page.canvas.SetToolTipString('%4x'%((ypix*2048+xpix)*2+4096))
    600596                tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data)
    601597                Q = 2.*math.pi/dsp
    602598                self.G2plotNB.status.SetFields(\
    603                     ['Detector 2-th =%9.2fdeg, dsp =%9.3fA, Q = %6.3fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int),''])
     599                    ['','Detector 2-th =%9.2fdeg, dsp =%9.3fA, Q = %6.3fA-1, azm = %7.2fdeg, I = %6d'%(tth,dsp,Q,azm,Int)])
    604600
    605601    def OnImPlotKeyPress(event):
    606         if self.PatternTree.GetItemText(self.PickId) == 'Image Controls':
    607             Data = self.PatternTree.GetItemPyData(self.PickId)
    608             pixelSize = Data['pixelSize']
    609             size = len(self.ImageZ)
     602        if self.PatternTree.GetItemText(self.PickId) == 'Masks':
     603            Mask = self.PatternTree.GetItemPyData(self.PickId)
    610604            Xpos = event.xdata
    611605            if not Xpos:            #got point out of frame
    612606                return
    613607            Ypos = event.ydata
    614             if event.key == 'm':
    615                 print 'mask = ',Xpos,Ypos
     608            if event.key == 's':
     609                print 'spot mask @ ',Xpos,Ypos
     610                Mask['Points'].append([Xpos,Ypos,1])
     611            elif event.key == 'r':
     612                print 'ring mask @ ',Xpos,Ypos
     613            elif event.key == 'a':
     614                print 'arc mask @ ', Xpos,Ypos
     615            G2imG.UpdateMasks(self,Mask)
     616        PlotImage(self)
    616617           
    617618    def OnImPick(event):
    618         if self.PatternTree.GetItemText(self.PickId) != 'Image Controls':
     619        if self.PatternTree.GetItemText(self.PickId) not in ['Image Controls','Masks']:
    619620            return
    620621        if self.itemPicked is not None: return
     
    623624       
    624625    def OnImRelease(event):
    625         if self.PatternTree.GetItemText(self.PickId) != 'Image Controls':
     626        PickName = self.PatternTree.GetItemText(self.PickId)
     627        if PickName not in ['Image Controls','Masks']:
    626628            return
    627         Data = self.PatternTree.GetItemPyData(self.PickId)
    628629        pixelSize = Data['pixelSize']
    629630        scalex = 1000./pixelSize[0]
    630631        scaley = 1000./pixelSize[1]
    631         if self.itemPicked is None:
     632        if self.itemPicked is None and PickName == 'Image Controls':
    632633            size = len(self.ImageZ)
    633634            Xpos = event.xdata
     
    660661                else:
    661662                    tth,azm,dsp = G2img.GetTthAzmDsp(xpos,ypos,Data)
    662                     if 'Line2D' in str(self.itemPicked):
     663                    itemPicked = str(self.itemPicked)
     664                    if 'Line2D' in itemPicked and PickName == 'Image Controls':
    663665                        if 'line1' in str(self.itemPicked):
    664666                            Data['IOtth'][0] = tth
     
    679681                        self.Lazim.SetValue("%6d" % (Data['LRazimuth'][0]))
    680682                        self.Razim.SetValue("%6d" % (Data['LRazimuth'][1]))
     683                    elif 'Circle' in itemPicked and PickName == 'Masks':
     684                        spots = Masks['Points']
     685                        newPos = itemPicked.split(')')[0].split('(')[2].split(',')
     686                        newPos = np.array([float(newPos[0]),float(newPos[1])])
     687                        for spot in spots:
     688                            if np.allclose(np.array([spot[:2]]),newPos):
     689                                spot[:2] = xpos,ypos
     690                        G2imG.UpdateMasks(self,Masks)
    681691                    else:
    682                         print event.xdata,event.ydata,event.button
     692                        print str(self.itemPicked),event.xdata,event.ydata,event.button
    683693                PlotImage(self)
    684694            self.itemPicked = None
     
    711721    Masks = self.PatternTree.GetItemPyData(
    712722        G2gd.GetPatternTreeItemId(self,self.Image, 'Masks'))
     723
    713724    imScale = 1
    714725    if len(self.ImageZ) > 1024:
     
    728739    #need "applyMask" routine here
    729740    Zlim = Masks['Thresholds'][1]
     741    spots = Masks['Points']
    730742    MA = ma.masked_greater(ma.masked_less(self.ImageZ,Zlim[0]),Zlim[1])
    731743    MaskA = ma.getmaskarray(MA)
     
    737749    Img = Plot.imshow(A,aspect='equal',cmap=acolor,
    738750        interpolation='nearest',vmin=Imin,vmax=Imax,extent=[0,Xmax,Xmax,0])
     751    for x,y,d in spots:
     752        Plot.add_artist(Circle((x,y),radius=d/2,fc='r',ec='r',picker=3))
    739753
    740754    Plot.plot(xcent,ycent,'x')
     
    800814        if azm and tth:
    801815            self.G2plotNB.status.SetFields(\
    802                 ['Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm),''])
     816                ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)])
    803817                               
    804818    try:
     
    865879        if azm and tth:
    866880            self.G2plotNB.status.SetFields(\
    867                 ['Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm),''])
     881                ['','Detector 2-th =%9.3fdeg, azm = %7.2fdeg'%(tth,azm)])
    868882                               
    869883    try:
Note: See TracChangeset for help on using the changeset viewer.