Changeset 20


Ignore:
Timestamp:
Jan 28, 2010 10:54:59 AM (13 years ago)
Author:
vondreel
Message:

more image controls fixes

Location:
trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r19 r20  
    411411                    if self.imageDefault:
    412412                        Data = copy.copy(self.imageDefault)
     413                        Data['refine'] = [False,False,False,False,False]
    413414                    else:
    414415                        Data['color'] = 'binary'
     
    423424                        Data['LRazimuth'] = [-45,45]
    424425                        Data['outChannels'] = 2500
     426                        Data['fullIntegrate'] = False
    425427                    Data['setDefault'] = False
    426428                    Data['range'] = [(Imin,Imax),[Imin,Imax]]
     
    12371239            if event.xdata:
    12381240                item = self.itemPicked
    1239                 if item:
     1241                if item and self.PatternTree.GetItemText(self.PickId) == 'Image Controls':
    12401242                    xpos = event.xdata
    12411243                    if xpos:                                        #avoid out of frame mouse position
     
    12441246                        xpos -= xcent*scalex
    12451247                        ypos -= ycent*scaley
    1246                         if 'Text' in str(item):
     1248                        if 'Text' in str(item) and Data['refine'][0]:
    12471249                            self.pdplot.canvas.SetToolTipString('%8.3f %8.3fmm'%(event.xdata/scalex,event.ydata/scaley))
    12481250                        else:
    1249 #                            xpos /= radius
    1250 #                            ypos /= radius
    1251                             if 'line2' in  str(item) or 'line3' in str(item):
     1251                            if 'line2' in  str(item) or 'line3' in str(item) and not Data['fullIntegrate']:
    12521252                                ang = int(atan2d(-ypos,xpos))
    12531253                                self.pdplot.canvas.SetToolTipString('%6d deg'%(ang))
    12541254                            else:
    12551255                                radius = math.sqrt(xpos**2+ypos**2)
    1256                                 self.pdplot.canvas.SetToolTipString('%8.3fmm'%(radius/scalex))
    1257                            
     1256                                self.pdplot.canvas.SetToolTipString('%8.3fmm'%(radius/scalex))                           
    12581257                else:
    12591258                    size = len(self.ImageZ)
     
    12751274                    return
    12761275                Ypos = int(event.ydata)*self.imScale
    1277                 if event.key == 'c':
     1276                if event.key == 'c' and Data['refine'][0]:
    12781277                    cent = Data['center'] = [Xpos*pixelSize[0]/1000.,Ypos*pixelSize[1]/1000.] #convert to mm
    12791278                    self.centText.SetValue(("%8.3f,%8.3f" % (cent[0],cent[1])))
     
    13001299           
    13011300        def OnImRelease(event):
    1302             if self.itemPicked is None: return
     1301            if self.itemPicked is None or self.PatternTree.GetItemText(self.PickId) != 'Image Controls': return
     1302            Data = self.PatternTree.GetItemPyData(self.PickId)
    13031303            xpos = event.xdata
    13041304            if xpos:                                        #avoid out of frame mouse position
     
    13141314                ang = int(atan2d(-ypos,xpos))
    13151315                if 'Line2D' in str(self.itemPicked):
    1316                     if 'line2' in str(self.itemPicked):
     1316                    if 'line2' in str(self.itemPicked) and not Data['fullIntegrate']:
    13171317                        Data['LRazimuth'][0] = ang
    1318                     elif 'line3' in str(self.itemPicked):
     1318                    elif 'line3' in str(self.itemPicked) and not Data['fullIntegrate']:
    13191319                        Data['LRazimuth'][1] = ang
    13201320                    elif 'line0' in str(self.itemPicked):
     
    13281328                    self.IOradText.SetValue("%8.3f,%8.3f" % (Data['IOradii'][0],Data['IOradii'][1]))
    13291329                    self.LRazim.SetValue("%6d,%6d" % (Data['LRazimuth'][0],Data['LRazimuth'][1]))
    1330                 elif 'Text' in str(self.itemPicked):
     1330                elif 'Text' in str(self.itemPicked) and Data['refine'][0]:
    13311331                    cent = Data['center'] = [event.xdata/scalex,event.ydata/scalex]
    13321332                    try:
     
    13391339
    13401340        newPlot = False
    1341         self.NewPlot = True
     1341        self.NewPlot = True
     1342        self.itemPicked = None
    13421343        try:
    13431344            self.pdplot.clear()
     
    13931394            arcyO = -np.cos(arcyO*math.pi/180.)*scaley*Data['IOradii'][1]+ycent
    13941395            ax.plot(arcxO,arcyO,picker=3)
    1395             xbeg = arcxI[0]
    1396             ybeg = arcyI[0]
    1397             ax.plot([xbeg,sind(LRAzim[0])*IOradii[1]*scalex+xcent],
    1398                 [ybeg,-cosd(LRAzim[0])*IOradii[1]*scaley+ycent],picker=3)
    1399             xbeg = arcxI[-1]
    1400             ybeg = arcyI[-1]
    1401             ax.plot([xbeg,sind(LRAzim[1])*IOradii[1]*scalex+xcent],
    1402                 [ybeg,-cosd(LRAzim[1])*IOradii[1]*scaley+ycent],picker=3)
     1396            if not Data['fullIntegrate']:
     1397                xbeg = arcxI[0]
     1398                ybeg = arcyI[0]
     1399                ax.plot([xbeg,sind(LRAzim[0])*IOradii[1]*scalex+xcent],
     1400                    [ybeg,-cosd(LRAzim[0])*IOradii[1]*scaley+ycent],picker=3)
     1401                xbeg = arcxI[-1]
     1402                ybeg = arcyI[-1]
     1403                ax.plot([xbeg,sind(LRAzim[1])*IOradii[1]*scalex+xcent],
     1404                    [ybeg,-cosd(LRAzim[1])*IOradii[1]*scaley+ycent],picker=3)
    14031405        for xring,yring in Data['ring']:
    14041406            xring *= scalex
  • trunk/GSASIIgrid.py

    r19 r20  
    806806        except ValueError:
    807807            pass
    808         outChan.SetValue(str(data['outChannels']))       
     808        outChan.SetValue(str(data['outChannels']))          #reset in case of error       
    809809       
    810810    def OnWavelength(event):
     
    814814        except ValueError:
    815815            pass
    816         waveSel.SetValue("%6.5f" % (data['wavelength']))       
     816        waveSel.SetValue("%6.5f" % (data['wavelength']))          #reset in case of error         
    817817       
    818818    def OnDistance(event):
     
    822822        except ValueError:
    823823            pass
    824         distSel.SetValue("%8.3f"%(data['distance']))
     824        distSel.SetValue("%8.3f"%(data['distance']))          #reset in case of error 
    825825       
    826826    def OnImRefine(event):
     
    830830        ImageCalibRef[3] = tiltRef.GetValue()
    831831        ImageCalibRef[4] = rotRef.GetValue()
     832        SetStatusLine()
    832833               
    833834    def OnShowLines(event):
     
    836837        else:
    837838            data['showLines'] = True
    838         showLines.SetValue(data['showLines'])
    839839        self.PlotImage()
     840       
     841    def OnFullIntegrate(event):
     842        if data['fullIntegrate']:
     843            data['fullIntegrate'] = False
     844            data['LRazimuth'] = [-45,45]
     845            self.LRazim.SetValue("%6d,%6d" % (-45,45))           
     846        else:
     847            data['fullIntegrate'] = True
     848            data['LRazimuth'] = [0,360]
     849            self.LRazim.SetValue("%6d,%6d" % (0,360))           
     850        self.PlotImage()
     851       
    840852       
    841853    def OnSetDefault(event):
     
    847859            self.imageDefault = copy.copy(data)
    848860            data['setDefault'] = True
    849         setDefault.SetValue(data['setDefault'])
    850861       
    851862   
     
    855866    def OnIntegrate(event):
    856867        print 'image integrate'
     868       
     869    def SetStatusLine():
     870        if data['refine'][0]:
     871            Status.SetStatusText("On Image: key 'c' to mark center or 'r' on inner ring for calibration")
     872        else:
     873            Status.SetStatusText("On Image: key 'r' on inner ring for calibration")
    857874                             
    858875    colorList = [m for m in mpl.cm.datad.keys() if not m.endswith("_r")]
     
    863880    self.dataFrame.SetMenuBar(self.dataFrame.ImageMenu)
    864881    Status = self.dataFrame.CreateStatusBar()
    865     Status.SetStatusText("On Image: key 'c' to mark center or 'r' on inner ring for calibration")
     882    SetStatusLine()
    866883    self.dataFrame.Bind(wx.EVT_MENU, OnCalibrate, id=wxID_IMCALIBRATE)
    867884    self.dataFrame.Bind(wx.EVT_MENU, OnIntegrate, id=wxID_IMINTEGRATE)       
     
    916933        wx.ALIGN_CENTER_VERTICAL)
    917934    cent = data['center']
    918     self.centText = wx.TextCtrl(parent=self.dataDisplay,value=("%8.3f,%8.3f" % (cent[0],cent[1])))
     935    self.centText = wx.TextCtrl(parent=self.dataDisplay,value=("%8.3f,%8.3f" % (cent[0],cent[1])),style=wx.TE_READONLY)
    919936    dataSizer.Add(self.centText,0,wx.ALIGN_CENTER_VERTICAL)
    920937    centRef = wx.CheckBox(parent=self.dataDisplay,label='refine?')
     
    976993    showLines.Bind(wx.EVT_CHECKBOX, OnShowLines)
    977994    showLines.SetValue(data['showLines'])
    978     dataSizer.Add((5,5),0)
     995    fullIntegrate = wx.CheckBox(parent=self.dataDisplay,label='Do full integration?')
     996    dataSizer.Add(fullIntegrate,0)
     997    fullIntegrate.Bind(wx.EVT_CHECKBOX, OnFullIntegrate)
     998    fullIntegrate.SetValue(data['fullIntegrate'])
    979999   
    9801000    dataSizer.Add(wx.StaticText(parent=self.dataDisplay,label=' Tilt rotation'),0,
Note: See TracChangeset for help on using the changeset viewer.