Changeset 25


Ignore:
Timestamp:
Feb 8, 2010 9:51:58 AM (12 years ago)
Author:
vondreel
Message:
 
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r24 r25  
    296296       
    297297    def OnPwdrReadMenu(self, event):
    298         if not G2gd.GetPatternTreeItemId(self,self.root,'Notebook'):
    299             sub = self.PatternTree.AppendItem(parent=self.root,text='Notebook')
    300             self.PatternTree.SetItemPyData(sub,[''])
    301             sub = self.PatternTree.AppendItem(parent=self.root,text='Controls')
    302             self.PatternTree.SetItemPyData(sub,[0])
     298        self.CheckNotebook()
    303299        dlg = wx.FileDialog(self, 'Choose files', '.', '',
    304300            'GSAS fxye files (*.fxye)|*.fxye|GSAS fxy files (*.fxy)|*.fxy|All files (*.*)|*.*',
     
    373369    def OnReadPowderPeaks(self,event):
    374370        Cuka = 1.54052
    375         if not G2gd.GetPatternTreeItemId(self,self.root,'Notebook'):
    376             sub = self.PatternTree.AppendItem(parent=self.root,text='Notebook')
    377             self.PatternTree.SetItemPyData(sub,[''])
     371        self.CheckNotebook()
    378372        dlg = wx.FileDialog(self, 'Choose file with peak list', '.', '',
    379373            'peak files (*.txt)|*.txt|All files (*.*)|*.*',wx.OPEN)
     
    401395    def OnImageRead(self,event):
    402396        import copy
    403         if not G2gd.GetPatternTreeItemId(self,self.root,'Notebook'):
    404             sub = self.PatternTree.AppendItem(parent=self.root,text='Notebook')
    405             self.PatternTree.SetItemPyData(sub,[''])
     397        self.CheckNotebook()
    406398        dlg = wx.FileDialog(self, 'Choose image file', '.', '', \
    407             'MAR345 (*.mar3450)|*.mar3450|ADSC Image (*.img)|*.img|Perkin-Elmer TIF (*.tif)|*.tif|All files (*.*)|*.*',wx.OPEN)
     399            'MAR345 (*.mar3450)|*.mar3450|ADSC Image (*.img)|*.img \
     400            |Perkin-Elmer TIF (*.tif)|*.tif|GE Image sum (*.sum)|*.sum|All files (*.*)|*.*',wx.OPEN)
    408401        if self.dirname:
    409402            dlg.SetDirectory(self.dirname)
     
    421414                elif ext == '.mar3450':
    422415                    Comments,Data,Size,Image = G2IO.GetMAR345Data(self.imagefile)
     416                elif ext == '.sum':
     417                    Comments,Data,Size,Image = G2IO.GetGEsumData(self.imagefile)
    423418                if Comments:
    424419                    Id = self.PatternTree.AppendItem(parent=self.root,text='IMG '+ospath.basename(self.imagefile))
     
    437432                        Data['showLines'] = False
    438433                        Data['ring'] = []
     434                        Data['ellipses'] = []
    439435                        Data['masks'] = []
    440436                        Data['calibrant'] = ''
     
    456452       
    457453    def OnSnglReadMenu(self,event):
    458         if not G2gd.GetPatternTreeItemId(self,self.root,'Notebook'):
    459             self.PatternTree.AppendItem(parent=self.root,text='')
    460             self.PatternTree.AppendItem(parent=self.root,text='Controls')
     454        self.CheckNotebook()
    461455        dlg = wx.FileDialog(self, 'Choose file', '.', '',
    462456            'hkl files (*.hkl)|*.hkl|All files (*.*)|*.*',
     
    494488        finally:
    495489            dlg.Destroy()
     490           
     491    def CheckNotebook(self):
     492        if not G2gd.GetPatternTreeItemId(self,self.root,'Notebook'):
     493            sub = self.PatternTree.AppendItem(parent=self.root,text='Notebook')
     494            self.PatternTree.SetItemPyData(sub,[''])
     495            sub = self.PatternTree.AppendItem(parent=self.root,text='Controls')
     496            self.PatternTree.SetItemPyData(sub,[0])
     497       
    496498       
    497499    class SumDialog(wx.Dialog):
     
    12791281           
    12801282    def PlotImage(self):
     1283        from matplotlib.patches import Ellipse
    12811284
    12821285        def OnImMotion(event):
    12831286            self.pdplot.canvas.SetToolTipString('')
    1284             if event.xdata:
     1287            if (xlim[0] < event.xdata < xlim[1]) & (ylim[0] > event.ydata > ylim[1]):
    12851288                item = self.itemPicked
    12861289                if item and self.PatternTree.GetItemText(self.PickId) == 'Image Controls':
     
    12981301                            self.pdplot.canvas.SetToolTipString('%8.3fmm'%(radius/scalex))                           
    12991302                else:
    1300                     self.pdplot.canvas.SetToolTipString('%6d'%(self.ImageZ[int(event.ydata)*self.imScale] \
    1301                         [int(event.xdata)*self.imScale]))
     1303                    xpos = int(event.xdata)*self.imScale
     1304                    ypos = int(event.ydata)*self.imScale
     1305                    self.pdplot.canvas.SetToolTipString('%6d'%(self.ImageZ[ypos][xpos]))
    13021306
    13031307        def OnImPlotKeyPress(event):
     
    13161320                    self.centText.SetValue(("%8.3f,%8.3f" % (cent[0],cent[1])))
    13171321                elif event.key == 'r':
    1318                     w = 20
    1319                     w2 = w*2
    1320                     Z = self.ImageZ[Ypos-w:Ypos+w,Xpos-w:Xpos+w]
    1321                     Zmax = np.argmax(Z)
    1322                     Xpos += Zmax%w2-w
    1323                     Ypos += Zmax/w2-w
    1324                     xpos = Xpos*pixelSize[0]/1000.
    1325                     ypos = Ypos*pixelSize[1]/1000.
    1326                     Data['ring'].append([xpos,ypos])
     1322                    Xpos,Ypos,I,J = G2cmp.ImageLocalMax(self.ImageZ,20,Xpos,Ypos)
     1323                    if I and J:
     1324                        xpos = Xpos*pixelSize[0]/1000.
     1325                        ypos = Ypos*pixelSize[1]/1000.
     1326                        Data['ring'].append([xpos,ypos])
     1327                elif event.key == 'd':
     1328                    scale = self.imScale*pixelSize[0]/1000.
     1329                    xypos = [event.xdata*scale,event.ydata*scale]
     1330                    rings = Data['ring']
     1331                    for ring in rings:
     1332                        if np.allclose(ring,xypos,.01,0):
     1333                            rings.remove(ring)                                               
    13271334                elif event.key == 'm':
    13281335                    xpos = Xpos*pixelSize[0]/1000.
     
    13971404        PickId = self.PickId
    13981405        ax = self.pdplot.add_subplot(111)
     1406        self.PlotAX = ax
     1407        ax.set_title(self.PatternTree.GetItemText(self.Image)[4:])
    13991408        size,self.ImageZ = self.PatternTree.GetItemPyData(self.Image)
    14001409        Data = self.PatternTree.GetItemPyData( \
     
    14101419            ylim = self.Img.axes.get_ylim()
    14111420        pixelSize = Data['pixelSize']
    1412         scalex = 1000./(pixelSize[0]*self.imScale)
    1413         scaley = 1000./(pixelSize[1]*self.imScale)
     1421        Data['scalex'] = scalex = 1000./(pixelSize[0]*self.imScale)
     1422        Data['scaley'] = scaley = 1000./(pixelSize[1]*self.imScale)
    14141423        Imin,Imax = Data['range'][1]
    14151424        acolor = mpl.cm.get_cmap(Data['color'])
     
    14461455            xring *= scalex
    14471456            yring *= scaley
    1448             ax.text(xring,yring,'+',ha='center',va='center')
     1457            ax.text(xring,yring,'+',ha='center',va='center',picker=3)
     1458        for ellipse in Data['ellipses']:
     1459            cent,phi,[width,height] = ellipse
     1460            ax.add_artist(Ellipse([cent[0]*scalex,cent[1]*scaley],2*width*scalex,2*height*scalex,phi,fc=None))
    14491461        self.Img.axes.set_xlim(xlim)
    14501462        self.Img.axes.set_ylim(ylim)
     
    16931705                   
    16941706        def OnSCPick(event):
    1695 #            print str(event.artist).split('(')
    1696             pass
     1707            zpos = Data['Layer']
     1708            pos = event.artist.center
     1709            if '100' in Data['Zone']:
     1710                self.pdplot.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(zpos,pos[0],pos[1]))
     1711            elif '010' in Data['Zone']:
     1712                self.pdplot.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(pos[0],zpos,pos[1]))
     1713            elif '001' in Data['Zone']:
     1714                self.pdplot.canvas.SetToolTipString('(picked:(%3d,%3d,%3d))'%(pos[0],pos[1],zpos))                 
     1715           
     1716        def OnSCKeyPress(event):
     1717            print event.key
    16971718                   
    16981719        try:
     
    17091730            self.NewPlot = True
    17101731        if not self.SCevent:
     1732            self.SCevent.append(self.pdplot.canvas.mpl_connect('key_press_event', OnSCKeyPress))
    17111733            self.SCevent.append(self.pdplot.canvas.mpl_connect('pick_event', OnSCPick))
    17121734            self.SCevent.append(self.pdplot.canvas.mpl_connect('motion_notify_event', OnSCMotion))
     
    17301752        pzone = [[1,2],[0,2],[0,1]]
    17311753        izone = zones.index(Data['Zone'])
     1754        ax.set_title(self.PatternTree.GetItemText(self.Sngl)[5:])
    17321755        for h,k,l,Fosq,sig,Fcsq,x,x,x in HKLref:
    17331756            H = [h,k,l]
     
    17511774                    if A < 3.0: A = 0                   
    17521775                xy = (H[pzone[izone][0]],H[pzone[izone][1]])
    1753                 ax.add_artist(Circle(xy,radius=A,ec='g',fc='w'))
     1776                if A > 0.0:
     1777                    ax.add_artist(Circle(xy,radius=A,ec='g',fc='w',picker=3))
    17541778                if B:
    1755                     ax.add_artist(Circle(xy,radius=B,ec='b',fc='w',picker=3))
     1779                    ax.add_artist(Circle(xy,radius=B,ec='b',fc='w'))
    17561780                    radius = C
    17571781                    if radius > 0:
Note: See TracChangeset for help on using the changeset viewer.