Changeset 675


Ignore:
Timestamp:
Jul 3, 2012 1:34:51 PM (9 years ago)
Author:
vondreele
Message:

refactor image controls GUI
add oblique detector absorption correction to integration

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIimage.py

    r674 r675  
    1717import GSASIIplot as G2plt
    1818import GSASIIlattice as G2lat
     19import GSASIIpwd as G2pwd
    1920import fellipse as fel
    2021
     
    731732            H1 = LRazm
    732733        H0[0] /= npcosd(H2[:-1])**2
     734        if data['Oblique'][1]:
     735            H0[0] /= G2pwd.Oblique(data['Oblique'][0],H2[:-1])
    733736        Nup += 1
    734737        dlg.Update(Nup)
  • trunk/GSASIIimgGUI.py

    r661 r675  
    345345        return maxSizer
    346346       
    347     def DataSizer():
    348                
     347    def CalibCoeffSizer():
     348       
     349        def OnWavelength(event):
     350            try:
     351                wave = float(waveSel.GetValue())
     352                if wave < .01:
     353                    raise ValueError
     354                data['wavelength'] = wave
     355            except ValueError:
     356                pass
     357            waveSel.SetValue("%6.5f" % (data['wavelength']))          #reset in case of error         
     358           
     359        calibSizer = wx.FlexGridSizer(5,2,5,5)
     360        calibSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calibration coefficients'),0,
     361            wx.ALIGN_CENTER_VERTICAL)   
     362        calibSizer.Add((5,0),0)       
     363        calibSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Beam center X,Y'),0,
     364            wx.ALIGN_CENTER_VERTICAL)
     365        cent = data['center']
     366        centText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%8.3f,%8.3f" % (cent[0],cent[1])),style=wx.TE_READONLY)
     367        centText.SetBackgroundColour(VERY_LIGHT_GREY)
     368        calibSizer.Add(centText,0,wx.ALIGN_CENTER_VERTICAL)       
     369        calibSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Wavelength'),0,
     370            wx.ALIGN_CENTER_VERTICAL)
     371        waveSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%6.5f" % (data['wavelength'])),
     372            style=wx.TE_PROCESS_ENTER)
     373        waveSel.Bind(wx.EVT_TEXT_ENTER,OnWavelength)
     374        waveSel.Bind(wx.EVT_KILL_FOCUS,OnWavelength)
     375        calibSizer.Add(waveSel,0,wx.ALIGN_CENTER_VERTICAL)             
     376        calibSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Distance'),0,
     377            wx.ALIGN_CENTER_VERTICAL)
     378        distSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%8.3f"%(data['distance'])),style=wx.TE_READONLY)
     379        distSel.SetBackgroundColour(VERY_LIGHT_GREY)
     380        calibSizer.Add(distSel,0,wx.ALIGN_CENTER_VERTICAL)
     381        calibSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Tilt angle'),0,
     382            wx.ALIGN_CENTER_VERTICAL)
     383        tiltSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%9.3f"%(data['tilt'])),style=wx.TE_READONLY)
     384        tiltSel.SetBackgroundColour(VERY_LIGHT_GREY)
     385        calibSizer.Add(tiltSel,0,wx.ALIGN_CENTER_VERTICAL)
     386        calibSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Tilt rotation'),0,
     387            wx.ALIGN_CENTER_VERTICAL)
     388        rotSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%9.3f"%(data['rotation']-90.)),style=wx.TE_READONLY) #kluge to get rotation from vertical - see GSASIIimage
     389        rotSel.SetBackgroundColour(VERY_LIGHT_GREY)
     390        calibSizer.Add(rotSel,0,wx.ALIGN_CENTER_VERTICAL)
     391        return calibSizer
     392   
     393    def IntegrateSizer():
     394       
    349395        def OnIOtth(event):
    350396            Ltth = max(float(G2frame.InnerTth.GetValue()),0.001)
     
    357403            G2plt.PlotExposedImage(G2frame,event=event)
    358404       
    359         def OnWavelength(event):
    360             try:
    361                 wave = float(waveSel.GetValue())
    362                 if wave < .01:
    363                     raise ValueError
    364                 data['wavelength'] = wave
    365             except ValueError:
    366                 pass
    367             waveSel.SetValue("%6.5f" % (data['wavelength']))          #reset in case of error         
    368        
    369405        def OnLRazim(event):
    370406            Lazm =int(G2frame.Lazim.GetValue())
     
    398434            G2plt.PlotExposedImage(G2frame,event=event)
    399435       
     436        def OnOblique(event):
     437            if data['Oblique'][1]:
     438                data['Oblique'][1] = False
     439            else:
     440                data['Oblique'][1] = True
     441               
     442        def OnObliqVal(event):
     443            try:
     444                value = float(obliqVal.GetValue())
     445                if 0.01 <= value <= 0.99:
     446                    data['Oblique'][0] = value
     447                else:
     448                    raise ValueError
     449            except ValueError:
     450                pass
     451            obliqVal.SetValue('%.3f'%(data['Oblique'][0]))
     452                           
    400453        def OnShowLines(event):
    401454            if data['showLines']:
     
    432485            G2plt.PlotExposedImage(G2frame,event=event)
    433486               
    434         def OnBackImage(event):
    435             data['background image'][0] = backImage.GetValue()
    436            
    437         def OnBackMult(event):
    438             try:
    439                 mult = float(backMult.GetValue())
    440                 data['background image'][1] = mult
    441             except ValueError:
    442                 pass
    443             backMult.SetValue("%.3f" % (data['background image'][1]))          #reset in case of error
    444 
    445         dataSizer = wx.FlexGridSizer(6,4,5,5)
    446         dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calibration coefficients'),0,
    447             wx.ALIGN_CENTER_VERTICAL)   
    448         dataSizer.Add((5,0),0)
     487        dataSizer = wx.FlexGridSizer(5,2,5,5)
    449488        dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Integration coefficients'),0,
    450489            wx.ALIGN_CENTER_VERTICAL)   
    451490        dataSizer.Add((5,0),0)
    452        
    453         dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Beam center X,Y'),0,
    454             wx.ALIGN_CENTER_VERTICAL)
    455         cent = data['center']
    456         centText = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%8.3f,%8.3f" % (cent[0],cent[1])),style=wx.TE_READONLY)
    457         centText.SetBackgroundColour(VERY_LIGHT_GREY)
    458         dataSizer.Add(centText,0,wx.ALIGN_CENTER_VERTICAL)
    459        
    460491        dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Inner/Outer 2-theta'),0,
    461492            wx.ALIGN_CENTER_VERTICAL)
     
    474505        littleSizer.Add(G2frame.OuterTth,0,wx.ALIGN_CENTER_VERTICAL)
    475506        dataSizer.Add(littleSizer,0,)
    476            
    477         dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Wavelength'),0,
    478             wx.ALIGN_CENTER_VERTICAL)
    479         waveSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%6.5f" % (data['wavelength'])),
    480             style=wx.TE_PROCESS_ENTER)
    481         waveSel.Bind(wx.EVT_TEXT_ENTER,OnWavelength)
    482         waveSel.Bind(wx.EVT_KILL_FOCUS,OnWavelength)
    483         dataSizer.Add(waveSel,0,wx.ALIGN_CENTER_VERTICAL)
    484              
    485507        dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Start/End azimuth'),0,
    486508            wx.ALIGN_CENTER_VERTICAL)
     
    502524        littleSizer.Add(G2frame.Razim,0,wx.ALIGN_CENTER_VERTICAL)
    503525        dataSizer.Add(littleSizer,0,)
    504            
    505         dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Distance'),0,
    506             wx.ALIGN_CENTER_VERTICAL)
    507         distSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%8.3f"%(data['distance'])),style=wx.TE_READONLY)
    508         distSel.SetBackgroundColour(VERY_LIGHT_GREY)
    509         dataSizer.Add(distSel,0,wx.ALIGN_CENTER_VERTICAL)
    510    
    511526        dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' No. 2-theta/azimuth bins'),0,
    512527            wx.ALIGN_CENTER_VERTICAL)
     
    521536        littleSizer.Add(outAzim,0,wx.ALIGN_CENTER_VERTICAL)
    522537        dataSizer.Add(littleSizer,0,)
    523    
    524         dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Tilt angle'),0,
    525             wx.ALIGN_CENTER_VERTICAL)
    526         tiltSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%9.3f"%(data['tilt'])),style=wx.TE_READONLY)
    527         tiltSel.SetBackgroundColour(VERY_LIGHT_GREY)
    528         dataSizer.Add(tiltSel,0,wx.ALIGN_CENTER_VERTICAL)
     538        littleSizer = wx.BoxSizer(wx.HORIZONTAL)
     539        oblique = wx.CheckBox(parent=G2frame.dataDisplay,label='Appl. det. absorption?')
     540        dataSizer.Add(oblique,0,wx.ALIGN_CENTER_VERTICAL)
     541        oblique.Bind(wx.EVT_CHECKBOX, OnOblique)
     542        oblique.SetValue(data['Oblique'][1])
     543        littleSizer.Add(wx.StaticText(G2frame.dataDisplay,label=' value (0.01-0.99)  '),0,
     544            wx.ALIGN_CENTER_VERTICAL)
     545        obliqVal = wx.TextCtrl(parent=G2frame.dataDisplay,value='%.3f'%(data['Oblique'][0]),style=wx.TE_PROCESS_ENTER)
     546        obliqVal.Bind(wx.EVT_TEXT_ENTER,OnObliqVal)
     547        obliqVal.Bind(wx.EVT_KILL_FOCUS,OnObliqVal)
     548        littleSizer.Add(obliqVal,0,wx.ALIGN_CENTER_VERTICAL)
     549        dataSizer.Add(littleSizer,0,)
     550       
    529551        showLines = wx.CheckBox(parent=G2frame.dataDisplay,label='Show integration limits?')
    530552        dataSizer.Add(showLines,0,wx.ALIGN_CENTER_VERTICAL)
     
    535557        fullIntegrate.Bind(wx.EVT_CHECKBOX, OnFullIntegrate)
    536558        fullIntegrate.SetValue(data['fullIntegrate'])
    537        
    538         dataSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Tilt rotation'),0,
    539             wx.ALIGN_CENTER_VERTICAL)
    540         rotSel = wx.TextCtrl(parent=G2frame.dataDisplay,value=("%9.3f"%(data['rotation']-90.)),style=wx.TE_READONLY) #kluge to get rotation from vertical - see GSASIIimage
    541         rotSel.SetBackgroundColour(VERY_LIGHT_GREY)
    542         dataSizer.Add(rotSel,0,wx.ALIGN_CENTER_VERTICAL)
    543559        setDefault = wx.CheckBox(parent=G2frame.dataDisplay,label='Use as default for all images?')
    544560        dataSizer.Add(setDefault,0,wx.ALIGN_CENTER_VERTICAL)
     
    549565        centerAzm.Bind(wx.EVT_CHECKBOX, OnCenterAzm)
    550566        centerAzm.SetValue(data['centerAzm'])
    551        
    552         dataSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Background image'),0,wx.ALIGN_CENTER_VERTICAL)
     567        return dataSizer
     568       
     569    def BackSizer():
     570       
     571        def OnBackImage(event):
     572            data['background image'][0] = backImage.GetValue()
     573           
     574        def OnBackMult(event):
     575            try:
     576                mult = float(backMult.GetValue())
     577                data['background image'][1] = mult
     578            except ValueError:
     579                pass
     580            backMult.SetValue("%.3f" % (data['background image'][1]))          #reset in case of error
     581       
     582        backSizer = wx.FlexGridSizer(1,4,5,5)
     583        backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' Background image'),0,wx.ALIGN_CENTER_VERTICAL)
    553584        Choices = ['',]+G2gd.GetPatternTreeDataNames(G2frame,['IMG ',])
    554585        backImage = wx.ComboBox(parent=G2frame.dataDisplay,value=data['background image'][0],choices=Choices,
    555586            style=wx.CB_READONLY|wx.CB_DROPDOWN)
    556587        backImage.Bind(wx.EVT_COMBOBOX,OnBackImage)
    557         dataSizer.Add(backImage)
    558         dataSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' multiplier'),0,wx.ALIGN_CENTER_VERTICAL)
     588        backSizer.Add(backImage)
     589        backSizer.Add(wx.StaticText(G2frame.dataDisplay,-1,' multiplier'),0,wx.ALIGN_CENTER_VERTICAL)
    559590        backMult =  wx.TextCtrl(parent=G2frame.dataDisplay,value=("%.3f" % (data['background image'][1])),
    560591            style=wx.TE_PROCESS_ENTER)
    561592        backMult.Bind(wx.EVT_TEXT_ENTER,OnBackMult)
    562593        backMult.Bind(wx.EVT_KILL_FOCUS,OnBackMult)
    563         dataSizer.Add(backMult,0,wx.ALIGN_CENTER_VERTICAL)
    564         return dataSizer
    565 
     594        backSizer.Add(backMult,0,wx.ALIGN_CENTER_VERTICAL)
     595        return backSizer
     596                       
    566597    def CalibSizer():
    567598               
     
    674705    if 'centerAzm' not in data:
    675706        data['centerAzm'] = False
     707    if 'Oblique' not in data:
     708        data['Oblique'] = [0.5,False]
    676709    #end fix
    677710   
     
    706739    mainSizer.Add(MaxSizer(),0,wx.ALIGN_LEFT|wx.EXPAND)
    707740   
    708     mainSizer.Add((5,5),0)       
    709     mainSizer.Add(DataSizer(),0)
     741    mainSizer.Add((5,5),0)
     742    DataSizer = wx.FlexGridSizer(1,2,5,5)
     743    DataSizer.Add(CalibCoeffSizer(),0)
     744    DataSizer.Add(IntegrateSizer(),0)       
     745    mainSizer.Add(DataSizer,0)
     746    mainSizer.Add((5,5),0)           
     747    mainSizer.Add(BackSizer(),0)
    710748    mainSizer.Add(wx.StaticText(parent=G2frame.dataDisplay,label=' Calibration controls:'),0,
    711749        wx.ALIGN_CENTER_VERTICAL)
Note: See TracChangeset for help on using the changeset viewer.