Changeset 158 for trunk/GSASIIphsGUI.py


Ignore:
Timestamp:
Oct 1, 2010 12:36:31 PM (15 years ago)
Author:
vondreele
Message:

implement drawing options:
select atom hilites
movable test point & atom insertion

File:
1 edited

Legend:

Unmodified
Added
Removed
  • TabularUnified trunk/GSASIIphsGUI.py

    r157 r158  
    612612                        Atoms.SetCellStyle(row,ci,WHITE,False)
    613613
    614     def AtomAdd(event):
     614    def OnAtomAdd(event):
     615        AtomAdd(0,0,0)
     616        FillAtomsGrid()
     617        event.StopPropagation()
     618       
     619    def OnAtomTestAdd(event):
     620        try:
     621            drawData = data['Drawing']
     622            x,y,z = drawData['testPos']
     623            AtomAdd(x,y,z)
     624        except:
     625            AtomAdd(0,0,0)
     626        FillAtomsGrid()
     627        event.StopPropagation()
     628               
     629    def AtomAdd(x,y,z):
    615630        atomData = data['Atoms']
    616631        generalData = data['General']
    617632        Ncol = Atoms.GetNumberCols()
    618633        E,SGData = G2spc.SpcGroup(generalData['SGData']['SpGrp'])
    619         Sytsym,Mult = G2spc.SytSym([0,0,0],SGData)
     634        Sytsym,Mult = G2spc.SytSym([x,y,z],SGData)
    620635        if generalData['Type'] == 'macromolecular':
    621             atomData.append([0,'UNK','','UNK','UNK',Sytsym,Mult,0,0,1,'',0,'I',0.10,0,0,0,0,0,0])
     636            atomData.append([0,'UNK','','UNK','H','',x,y,z,1,Sytsym,Mult,'I',0.10,0,0,0,0,0,0])
    622637        elif generalData['Type'] == 'nuclear':
    623             atomData.append(['UNK','UNK','',0,0,0,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0])
     638            atomData.append(['UNK','H','',x,y,z,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0])
    624639        elif generalData['Type'] == 'magnetic':
    625             atomData.append(['UNK','UNK','',0,0,0,1,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,0,0,0])
     640            atomData.append(['UNK','H','',x,y,z,1,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,0,0,0])
     641        UpdateGeneral()
     642
     643    def OnAtomInsert(event):
     644        AtomInsert(0,0,0)
    626645        FillAtomsGrid()
    627646        event.StopPropagation()
    628 
    629     def AtomInsert(event):
     647       
     648    def OnAtomTestInsert(event):
     649        try:
     650            drawData = data['Drawing']
     651            x,y,z = drawData['testPos']
     652            AtomAdd(x,y,z)
     653        except:
     654            AtomAdd(0,0,0)
     655        FillAtomsGrid()
     656        event.StopPropagation()
     657           
     658    def AtomInsert(x,y,z):
    630659        indx = Atoms.GetSelectedRows()
    631660        if indx:
     
    637666            Sytsym,Mult = G2spc.SytSym([0,0,0],SGData)
    638667            if generalData['Type'] == 'macromolecular':
    639                 atomData.insert(indx,[0,'UNK','','UNK','UNK',Sytsym,Mult,0,0,1,'',0,'I',0.10,0,0,0,0,0,0])
     668                atomData.insert(indx,[0,'UNK','','UNK','UNK','',x,y,z,1,Sytsym,Mult,'I',0.10,0,0,0,0,0,0])
    640669            elif generalData['Type'] == 'nuclear':
    641                 atomData.insert(indx,['UNK','UNK','',0,0,0,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0])
     670                atomData.insert(indx,['UNK','UNK','',x,y,z,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0])
    642671            elif generalData['Type'] == 'magnetic':
    643                 atomData.insert(indx,['UNK','UNK','',0,0,0,1,Sytsym,Mult,'I',0.01,0,0,0,0,0,0,0,0,0])
    644             FillAtomsGrid()
    645         event.StopPropagation()
     672                atomData.insert(indx,['UNK','UNK','',x,y,z,1,Sytsym,Mult,0,'I',0.01,0,0,0,0,0,0,0,0,0])
     673            UpdateGeneral()
    646674
    647675    def AtomDelete(event):
     
    739767        AA1letter = ['A','R','N','D','C','Q','E','G','H','I',
    740768            'L','K','M','F','P','S','T','W','Y','V','M',' ',' ',' ']
    741         defaultDrawing = {'viewPoint':[[0.5,0.5,0.5],[0,0]],'showHydrogen':True,'backColor':[0,0,0],'depthFog':False,
     769        defaultDrawing = {'viewPoint':[[0.5,0.5,0.5],[]],'showHydrogen':True,'backColor':[0,0,0],'depthFog':False,
    742770            'Zclip':50.0,'cameraPos':50.,'pickItem':'Atoms','showBadContacts':False,
    743             'bondRadius':0.1,'ballScale':0.33,'vdwScale':0.67,'ellipseProb':50,'sizeH':0.50,'packing':False,
    744             'unitCellBox':False,'showABC':True,'fogFactor':1.0,'showSymElem':False,'selectedAtoms':[],
    745             'Rotation':[0.0,0.0,0.0,np.array([0,0])],'bondList':{}}
     771            'bondRadius':0.1,'ballScale':0.33,'vdwScale':0.67,'ellipseProb':50,'sizeH':0.50,
     772            'unitCellBox':False,'showABC':True,'showSymElem':False,'selectedAtoms':[],
     773            'Rotation':[0.0,0.0,0.0,[]],'bondList':{},'testPos':[-.1,-.1,-.1]}
    746774        try:
    747775            drawingData = data['Drawing']
     
    774802
    775803    def UpdateDrawAtoms():
    776         self.dataFrame.setSizePosLeft([600,300])
    777804        generalData = data['General']
    778805        SetupDrawingData()
     
    789816            colLabels = ['Residue','1-letter','Chain'] + colLabels
    790817            Types = [wg.GRID_VALUE_STRING,wg.GRID_VALUE_STRING,wg.GRID_VALUE_STRING]+Types
    791             Types[8] = wg.GRID_VALUE_CHOICE+": ,lines,vdW balls,sticks,balls & sticks,ellipsoids,ribbons,schematic"
    792             styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids','ribbons','schematic']
     818            Types[8] = wg.GRID_VALUE_CHOICE+": ,lines,vdW balls,sticks,balls & sticks,ellipsoids,backbone,ribbons,schematic"
     819            styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids','backbone','ribbons','schematic']
    793820            labelChoice = [' ','type','name','number','residue','1-letter','chain']
    794821            Types[9] = wg.GRID_VALUE_CHOICE+": ,type,name,number,residue,1-letter,chain"
     
    829856                            drawAtoms.SelectRow(row,True)
    830857                            drawingData['selectedAtoms'].append(row)
     858                    G2plt.PlotStructure(self,data)                   
    831859                dlg.Destroy()
    832860               
     
    859887                            atomData[r][c] = parms
    860888                            drawAtoms.SetCellValue(r,c,parms)
    861                         G2plt.PlotStructure(self,data)
    862889                    dlg.Destroy()                   
    863890                elif drawAtoms.GetColLabelValue(c) == 'Residue':
     
    879906                    atomData[r][c] = drawAtoms.GetCellValue(r,c)
    880907                    FindBonds()
    881                     G2plt.PlotStructure(self,data)                   
     908            G2plt.PlotStructure(self,data)
    882909                   
    883910        def RowSelect(event):
     
    900927            drawingData['selectedAtoms'] = []
    901928            drawingData['selectedAtoms'] = drawAtoms.GetSelectedRows()
     929            G2plt.PlotStructure(self,data)                   
    902930               
    903931        table = []
     
    926954                attr.SetBackgroundColour(VERY_LIGHT_GREY)
    927955                drawAtoms.SetColAttr(c,attr)
     956        self.dataFrame.setSizePosLeft([600,300])
    928957        FindBonds()
    929958        G2plt.PlotStructure(self,data)
     
    937966            styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids','polyhedra']
    938967            if generalData['Type'] == 'macromolecular':
    939                 styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids','ribbons','schematic']
     968                styleChoice = [' ','lines','vdW balls','sticks','balls & sticks','ellipsoids',
     969                'backbone','ribbons','schematic']
    940970            dlg = wx.SingleChoiceDialog(self,'Select','Atom drawing style',styleChoice)
    941971            if dlg.ShowModal() == wx.ID_OK:
     
    12151245                i = atomA[0]
    12161246                for j in IndB[0]:
    1217                     if Types[i] == 'polyhedra':
    1218                         atomData[i][-1].append(np.inner(Amat,Dx[j]))
    1219                     elif Types[j] != 'polyhedra':
    1220                         atomData[i][-1].append(Dx[j]*Radii[i]/sumR[j])
    1221                         atomData[j][-1].append(-Dx[j]*Radii[j]/sumR[j])
     1247                    if j > i:
     1248                        if Types[i] == 'polyhedra':
     1249                            atomData[i][-1].append(np.inner(Amat,Dx[j]))
     1250                        elif Types[j] != 'polyhedra':
     1251                            atomData[i][-1].append(Dx[j]*Radii[i]/sumR[j])
     1252                            atomData[j][-1].append(-Dx[j]*Radii[j]/sumR[j])
    12221253
    12231254    def DrawAtomsDelete(event):   
     
    12371268        import copy
    12381269        import wx.lib.colourselect as wcs
    1239         self.dataFrame.setSizePosLeft([300,470])
     1270        self.dataFrame.setSizePosLeft([300,430])
    12401271        generalData = data['General']
    12411272        SetupDrawingData()
     
    12611292            G2plt.PlotStructure(self,data)
    12621293
    1263         def OnDepthFog(event):
    1264             drawingData['depthFog'] = depthFog.GetValue()
    1265             G2plt.PlotStructure(self,data)
    1266 
    1267         def OnFogFactor(event):
    1268             drawingData['fogFactor'] = fogFactor.GetValue()/100.
    1269             fogFactorTxt.SetLabel('Fog factor: '+'%.2f'%(drawingData['fogFactor']))
    1270             G2plt.PlotStructure(self,data)
    12711294
    12721295        def OnBallScale(event):
     
    12971320            drawingData['unitCellBox'] = unitCellBox.GetValue()
    12981321            G2plt.PlotStructure(self,data)
    1299 
    1300         def OnPacking(event):
    1301             drawingData['packing'] = packing.GetValue()
    13021322
    13031323        def OnShowBadContacts(event):
     
    13301350       
    13311351        slopSizer = wx.BoxSizer(wx.HORIZONTAL)
    1332         slideSizer = wx.FlexGridSizer(7,2,5,0)
     1352        slideSizer = wx.FlexGridSizer(6,2,5,0)
    13331353        slideSizer.AddGrowableCol(1,1)
    13341354
     
    13741394        slideSizer.Add(bondRadius,1,wx.EXPAND|wx.RIGHT)
    13751395       
    1376         fogFactorTxt = wx.StaticText(dataDisplay,-1,'Fog factor: '+'%.2f'%(drawingData['fogFactor']))
    1377         slideSizer.Add(fogFactorTxt,0,wx.ALIGN_CENTER_VERTICAL)
    1378         fogFactor = wx.Slider(dataDisplay,style=wx.SL_HORIZONTAL,value=int(100*drawingData['fogFactor']))
    1379         fogFactor.Bind(wx.EVT_SLIDER, OnFogFactor)
    1380         slideSizer.Add(fogFactor,1,wx.EXPAND|wx.RIGHT)
    1381 
    13821396        slopSizer.Add(slideSizer,1,wx.EXPAND|wx.RIGHT)
    13831397        slopSizer.Add((10,5),0)
     1398        slopSizer.SetMinSize(wx.Size(300,180))
    13841399        mainSizer.Add(slopSizer,1,wx.EXPAND)
    13851400
    1386         flexSizer = wx.FlexGridSizer(7,2,5,0)
     1401        flexSizer = wx.FlexGridSizer(6,2,5,0)
    13871402        flexSizer.Add(wx.StaticText(dataDisplay,-1,'View Point:  '),0,wx.ALIGN_CENTER_VERTICAL)
    13881403        VP = drawingData['viewPoint'][0]
     
    13921407        flexSizer.Add(viewPoint,0,wx.ALIGN_CENTER_VERTICAL)
    13931408       
    1394         depthFog = wx.CheckBox(dataDisplay,-1,label='Use depth fog?')
    1395         depthFog.Bind(wx.EVT_CHECKBOX, OnDepthFog)
    1396         depthFog.SetValue(drawingData['depthFog'])
    1397         flexSizer.Add(depthFog,0,wx.ALIGN_CENTER_VERTICAL)
    13981409        lineSizer = wx.BoxSizer(wx.HORIZONTAL)
    13991410        lineSizer.Add(wx.StaticText(dataDisplay,-1,'Background color:'),0,wx.ALIGN_CENTER_VERTICAL)
     
    14031414        flexSizer.Add(lineSizer,0,)
    14041415
    1405         showABC = wx.CheckBox(dataDisplay,-1,label='Show cell vectors?')
     1416        showABC = wx.CheckBox(dataDisplay,-1,label='Show test point?')
    14061417        showABC.Bind(wx.EVT_CHECKBOX, OnShowABC)
    14071418        showABC.SetValue(drawingData['showABC'])
     
    14121423        unitCellBox.SetValue(drawingData['unitCellBox'])
    14131424        flexSizer.Add(unitCellBox,0,wx.ALIGN_CENTER_VERTICAL)
    1414 
    1415         packing = wx.CheckBox(dataDisplay,-1,label='Packing diagram?')
    1416         packing.Bind(wx.EVT_CHECKBOX, OnPacking)
    1417         packing.SetValue(drawingData['packing'])
    1418         flexSizer.Add(packing,0,wx.ALIGN_CENTER_VERTICAL)
    14191425
    14201426        showBadContacts = wx.CheckBox(dataDisplay,-1,label='Show bad contacts?')
     
    14451451        flexSizer.Add(pickItem,0,wx.ALIGN_CENTER_VERTICAL)
    14461452        mainSizer.Add(flexSizer,0,)
    1447         mainSizer.SetMinSize(wx.Size(300,370))
     1453#        mainSizer.SetMinSize(wx.Size(300,340))          #to get sliders long enough
    14481454
    14491455        dataDisplay.SetSizer(mainSizer)
     
    14601466        if text == 'Atoms':
    14611467            self.dataFrame.SetMenuBar(self.dataFrame.AtomsMenu)
    1462             self.dataFrame.Bind(wx.EVT_MENU, AtomAdd, id=G2gd.wxID_ATOMSEDITADD)
    1463             self.dataFrame.Bind(wx.EVT_MENU, AtomInsert, id=G2gd.wxID_ATOMSEDITINSERT)
     1468            self.dataFrame.Bind(wx.EVT_MENU, OnAtomAdd, id=G2gd.wxID_ATOMSEDITADD)
     1469            self.dataFrame.Bind(wx.EVT_MENU, OnAtomTestAdd, id=G2gd.wxID_ATOMSTESTADD)
     1470            self.dataFrame.Bind(wx.EVT_MENU, OnAtomInsert, id=G2gd.wxID_ATOMSEDITINSERT)
     1471            self.dataFrame.Bind(wx.EVT_MENU, OnAtomTestInsert, id=G2gd.wxID_ATONTESTINSERT)
    14641472            self.dataFrame.Bind(wx.EVT_MENU, AtomDelete, id=G2gd.wxID_ATOMSEDITDELETE)
    14651473            self.dataFrame.Bind(wx.EVT_MENU, AtomRefine, id=G2gd.wxID_ATOMSREFINE)
Note: See TracChangeset for help on using the changeset viewer.