Changeset 2601


Ignore:
Timestamp:
Dec 23, 2016 1:37:14 PM (5 years ago)
Author:
vondreele
Message:

Add editing of atom bond radii for drawings; modify DisAglDialog? to not show angle radii if desired
some bug fixes in G2plothsGUI

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r2593 r2601  
    7474    wxID_DRAWVIEWPOINT, wxID_DRAWTRANSFORM, wxID_DRAWDELETE, wxID_DRAWFILLCELL,
    7575    wxID_DRAWADDEQUIV, wxID_DRAWFILLCOORD, wxID_DRAWDISAGLTOR,  wxID_DRAWPLANE,
    76     wxID_DRAWDISTVP, wxID_DRAWADDSPHERE,
    77 ] = [wx.NewId() for item in range(14)]
     76    wxID_DRAWDISTVP, wxID_DRAWADDSPHERE,wxID_DRWAEDITRADII,
     77] = [wx.NewId() for item in range(15)]
    7878
    7979[ wxID_DRAWRESTRBOND, wxID_DRAWRESTRANGLE, wxID_DRAWRESTRPLANE, wxID_DRAWRESTRCHIRAL,
     
    13761376    :param dict default:  A dict containing the default
    13771377      search ranges for each element.
     1378    :param bool Reset: if True (default), show Reset button
     1379    :param bool Angle: if True (default), show angle radii
    13781380    '''
    1379     def __init__(self,parent,data,default,Reset=True):
    1380         wx.Dialog.__init__(self,parent,wx.ID_ANY,'Distance Angle Controls',
     1381    def __init__(self,parent,data,default,Reset=True,Angle=True):
     1382        text = 'Distance Angle Controls'
     1383        if not Angle:
     1384            text = 'Distance Controls'
     1385        wx.Dialog.__init__(self,parent,wx.ID_ANY,text,
    13811386            pos=wx.DefaultPosition,style=wx.DEFAULT_DIALOG_STYLE)
    13821387        self.default = default
    13831388        self.Reset = Reset
     1389        self.Angle = Angle
    13841390        self.panel = wx.Panel(self)         #just a dummy - gets destroyed in Draw!
    13851391        self._default(data,self.default)
     
    14111417        mainSizer.Add((10,10),1)
    14121418       
    1413         radiiSizer = wx.FlexGridSizer(0,3,5,5)
     1419        ncol = 3
     1420        if not self.Angle:
     1421            ncol=2
     1422        radiiSizer = wx.FlexGridSizer(0,ncol,5,5)
    14141423        radiiSizer.Add(wx.StaticText(self.panel,-1,' Type'),0,WACV)
    14151424        radiiSizer.Add(wx.StaticText(self.panel,-1,'Bond radii'),0,WACV)
    1416         radiiSizer.Add(wx.StaticText(self.panel,-1,'Angle radii'),0,WACV)
     1425        if self.Angle:
     1426            radiiSizer.Add(wx.StaticText(self.panel,-1,'Angle radii'),0,WACV)
    14171427        self.objList = {}
    14181428        for id,item in enumerate(self.data['AtomTypes']):
    14191429            radiiSizer.Add(wx.StaticText(self.panel,-1,' '+item),0,WACV)
    1420             bRadii = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['BondRadii'][id]),style=wx.TE_PROCESS_ENTER)
    1421             self.objList[bRadii.GetId()] = ['BondRadii',id]
    1422             bRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
    1423             bRadii.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal)
     1430            bRadii = G2G.ValidatedTxtCtrl(self.panel,data['BondRadii'],id,nDig=(10,3),typeHint=float)
    14241431            radiiSizer.Add(bRadii,0,WACV)
    1425             aRadii = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['AngleRadii'][id]),style=wx.TE_PROCESS_ENTER)
    1426             self.objList[aRadii.GetId()] = ['AngleRadii',id]
    1427             aRadii.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
    1428             aRadii.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal)
    1429             radiiSizer.Add(aRadii,0,WACV)
     1432            if self.Angle:
     1433                aRadii = G2G.ValidatedTxtCtrl(self.panel,data['AngleRadii'],id,nDig=(10,3),typeHint=float)
     1434                radiiSizer.Add(aRadii,0,WACV)
    14301435        mainSizer.Add(radiiSizer,0,wx.EXPAND)
    1431         factorSizer = wx.FlexGridSizer(0,2,5,5)
    1432         Names = ['Bond','Angle']
    1433         for i,name in enumerate(Names):
    1434             factorSizer.Add(wx.StaticText(self.panel,-1,name+' search factor'),0,WACV)
    1435             bondFact = wx.TextCtrl(self.panel,-1,value='%.3f'%(data['Factors'][i]),style=wx.TE_PROCESS_ENTER)
    1436             self.objList[bondFact.GetId()] = ['Factors',i]
    1437             bondFact.Bind(wx.EVT_TEXT_ENTER,self.OnRadiiVal)
    1438             bondFact.Bind(wx.EVT_KILL_FOCUS,self.OnRadiiVal)
    1439             factorSizer.Add(bondFact)
    1440         mainSizer.Add(factorSizer,0,wx.EXPAND)
     1436        if self.Angle:
     1437            factorSizer = wx.FlexGridSizer(0,2,5,5)
     1438            Names = ['Bond','Angle']
     1439            for i,name in enumerate(Names):
     1440                factorSizer.Add(wx.StaticText(self.panel,-1,name+' search factor'),0,WACV)
     1441                bondFact = G2G.ValidatedTxtCtrl(self.panel,data['Factors'],i,nDig=(10,3),typeHint=float)
     1442                factorSizer.Add(bondFact)
     1443            mainSizer.Add(factorSizer,0,wx.EXPAND)
    14411444       
    14421445        OkBtn = wx.Button(self.panel,-1,"Ok")
     
    14551458        self.Fit()
    14561459   
    1457     def OnRadiiVal(self,event):
    1458         event.Skip()
    1459         Obj = event.GetEventObject()
    1460         item = self.objList[Obj.GetId()]
    1461         try:
    1462             self.data[item[0]][item[1]] = float(Obj.GetValue())
    1463         except ValueError:
    1464             pass
    1465         Obj.SetValue("%.3f"%(self.data[item[0]][item[1]]))          #reset in case of error
    1466        
    14671460    def GetData(self):
    14681461        'Returns the values from the dialog'
     
    23642357        self.DrawAtomEdit.Append(id=wxID_DRAWATOMRESETCOLOR, kind=wx.ITEM_NORMAL,text='Reset atom colors',
    23652358            help='Resets all atom colors to defaults')
     2359        self.DrawAtomEdit.Append(id=wxID_DRWAEDITRADII, kind=wx.ITEM_NORMAL,text='Edit atom radii',
     2360            help='Edit drawing atom radii')
    23662361        self.DrawAtomEdit.Append(id=wxID_DRAWVIEWPOINT, kind=wx.ITEM_NORMAL,text='View point',
    23672362            help='View point is 1st atom selected')
  • trunk/GSASIIphsGUI.py

    r2600 r2601  
    8888    Amat,Bmat = G2lat.cell2AB(generalData['Cell'][1:7])
    8989    radii = generalData['BondRadii']
     90    if generalData.get('DisAglCtls',{}):
     91        radii = generalData['DisAglCtls']['BondRadii']
    9092    atomTypes = generalData['AtomTypes']
    9193    try:
     
    678680                    denSizer[2].SetValue('%.3f'%(mattCoeff))
    679681                   
    680             def OnGfacVal(event):
    681                 Obj = event.GetEventObject()
    682                 ig = Indx[Obj.GetId()]
    683                 try:
    684                     val = float(Obj.GetValue())
    685                     if val < 0.5 or val > 3.0:
    686                         raise ValueError
    687                 except ValueError:
    688                     val = generalData['Lande g'][ig]
    689                 generalData['Lande g'][ig] = val
    690                 Obj.SetValue('%.2f'%(val))
    691                
    692682            elemSizer = wx.FlexGridSizer(0,len(generalData['AtomTypes'])+1,1,1)
    693683            elemSizer.Add(wx.StaticText(General,label=' Elements'),0,WACV)
     
    742732                        elemSizer.Add((5,0),)
    743733                    else:
    744 #        azmthOff = G2G.ValidatedTxtCtrl(G2frame.dataDisplay,data,'azmthOff',nDig=(10,2),typeHint=float,OnLeave=OnAzmthOff)
    745                         gfacTxt = wx.TextCtrl(General,value='%.2f'%(gfac),style=wx.TE_PROCESS_ENTER)
    746                         Indx[gfacTxt.GetId()] = ig
    747                         gfacTxt.Bind(wx.EVT_TEXT_ENTER,OnGfacVal)       
    748                         gfacTxt.Bind(wx.EVT_KILL_FOCUS,OnGfacVal)
     734                        gfacTxt = G2G.ValidatedTxtCtrl(General,generalData['Lande g'],ig,
     735                            min=0.5,max=3.0,nDig=(10,2),typeHint=float)
    749736                        elemSizer.Add(gfacTxt,0,WACV)
    750737            return elemSizer
     
    42744261        UpdateDrawAtoms()
    42754262        drawAtoms.ClearSelection()
    4276         G2plt.PlotStructure(G2frame,data)       
     4263        G2plt.PlotStructure(G2frame,data)
     4264       
     4265    def OnEditAtomRadii(event):
     4266        DisAglCtls = {}
     4267        generalData = data['General']
     4268        if 'DisAglCtls' in generalData:
     4269            DisAglCtls = generalData['DisAglCtls']
     4270        dlg = G2gd.DisAglDialog(G2frame,DisAglCtls,generalData,Angle=False)
     4271        if dlg.ShowModal() == wx.ID_OK:
     4272            DisAglCtls = dlg.GetData()
     4273        dlg.Destroy()
     4274        generalData['DisAglCtls'] = DisAglCtls
     4275        FindBondsDraw(data)
     4276        G2plt.PlotStructure(G2frame,data)         
    42774277       
    42784278    def SetViewPoint(event):
     
    76457645        if ReflData == None: return
    76467646        if 'Omit' in mapData['MapType']:
     7647            dim = '3D '
    76477648            pgbar = wx.ProgressDialog('Omit map','Blocks done',65,
    76487649            style = wx.PD_ELAPSED_TIME|wx.PD_AUTO_HIDE)
     
    80098010        G2frame.dataFrame.Bind(wx.EVT_MENU, DrawAtomColor, id=G2gd.wxID_DRAWATOMCOLOR)
    80108011        G2frame.dataFrame.Bind(wx.EVT_MENU, ResetAtomColors, id=G2gd.wxID_DRAWATOMRESETCOLOR)
     8012        G2frame.dataFrame.Bind(wx.EVT_MENU, OnEditAtomRadii, id=G2gd.wxID_DRWAEDITRADII)   
    80118013        G2frame.dataFrame.Bind(wx.EVT_MENU, SetViewPoint, id=G2gd.wxID_DRAWVIEWPOINT)
    80128014        G2frame.dataFrame.Bind(wx.EVT_MENU, AddSymEquiv, id=G2gd.wxID_DRAWADDEQUIV)
  • trunk/GSASIIplot.py

    r2600 r2601  
    49094909    atomData = data['Atoms']
    49104910    mapPeaks = []
     4911    vdWRadii = generalData['vdWRadii']
     4912    if generalData.get('DisAglCtrls',{}):
     4913        BondRadii = generalData['DisAglCtrls']['BondRadii']
     4914    else:
     4915        BondRadii = generalData['BondRadii']
    49114916    drawingData = data['Drawing']
    49124917    if not drawingData:
     
    51415146            for i,peak in enumerate(mapPeaks):
    51425147                x,y,z = peak[1:4]
    5143                 X,Y,Z = GLU.GLU.gluProject(x,y,z,Model,Proj,View)
     5148                X,Y,Z = GLU.gluProject(x,y,z,Model,Proj,View)
    51445149                XY = [int(X),int(View[3]-Y)]
    51455150                if np.allclose(xy,XY,atol=10) and Z < Zmax:
     
    58575862                    if drawingData['showHydrogen']:
    58585863                        if 'vdW' in atom[cs] and atNum >= 0:
    5859                             radius = vdwScale*generalData['vdWRadii'][atNum]
     5864                            radius = vdwScale*vdWRadii[atNum]
    58605865                        else:
    58615866                            radius = ballScale*drawingData['sizeH']
     
    58645869                else:
    58655870                    if 'vdW' in atom[cs]:
    5866                         radius = vdwScale*generalData['vdWRadii'][atNum]
     5871                        radius = vdwScale*vdWRadii[atNum]
    58675872                    else:
    5868                         radius = ballScale*generalData['BondRadii'][atNum]
     5873                        radius = ballScale*BondRadii[atNum]
    58695874                RenderSphere(x,y,z,radius,atColor)
    58705875                if 'sticks' in atom[cs]:
Note: See TracChangeset for help on using the changeset viewer.