Changeset 264 for trunk/GSASII.py


Ignore:
Timestamp:
Mar 31, 2011 4:41:13 PM (12 years ago)
Author:
vondreele
Message:

begin implementation of pdf generation - work in progress
modify image to have azimuth=0 as vertical "up"
add textctrls for max and min image intensity
fix to some lattice parameter defaults for some Laue groups

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASII.py

    r260 r264  
    5454] = [wx.NewId() for _init_ctrls in range(1)]
    5555
    56 [wxID_FILECLOSE, wxID_FILEEXIT, wxID_FILEOPEN,
    57  wxID_FILESAVE, wxID_FILESAVEAS, wxID_REFINE, wxID_SOLVE,
    58 ] = [wx.NewId() for _init_coll_File_Items in range(7)]
     56[wxID_FILECLOSE, wxID_FILEEXIT, wxID_FILEOPEN,  wxID_FILESAVE, wxID_FILESAVEAS,
     57wxID_REFINE, wxID_SOLVE, wxID_MAKEPDFS,
     58] = [wx.NewId() for _init_coll_File_Items in range(8)]
    5959
    6060[wxID_PWDRREAD,wxID_SNGLREAD,wxID_ADDPHASE,wxID_DELETEPHASE,
     
    6868
    6969[wxID_EXPORT, wxID_EXPORTPATTERN, wxID_EXPORTHKL, wxID_EXPORTPHASE,
    70 wxID_EXPORTCIF, wxID_EXPORTPEAKLIST
    71 ] = [wx.NewId() for _init_coll_Export_Items in range(6)]
     70wxID_EXPORTCIF, wxID_EXPORTPEAKLIST, wxID_EXPORTPDF,
     71] = [wx.NewId() for _init_coll_Export_Items in range(7)]
    7272
    7373[wxID_HELPABOUT, wxID_HELPHELP,
     
    8787        parent.Append(help='Open a gsasii project file (*.gpx)', id=wxID_FILEOPEN,
    8888             kind=wx.ITEM_NORMAL,text='Open project...')
    89         parent.Append(help='SAve project to old file', id=wxID_FILESAVE,
     89        parent.Append(help='Save project to old file', id=wxID_FILESAVE,
    9090            kind=wx.ITEM_NORMAL,text='Save project')
    9191        parent.Append(help='Save project to new file', id=wxID_FILESAVEAS,
     
    134134               
    135135    def _init_coll_Calculate_Items(self,parent):
     136        self.MakePDF = parent.Append(help='Make new PDFs from selected powder patterns',
     137            id=wxID_MAKEPDFS, kind=wx.ITEM_NORMAL,text='Make new PDFs')
     138        self.Bind(wx.EVT_MENU, self.OnMakePDFs, id=wxID_MAKEPDFS)
    136139        self.Refine = parent.Append(help='', id=wxID_REFINE, kind=wx.ITEM_NORMAL,
    137140            text='Refine')
     
    167170        self.ExportHKL = parent.Append(help='',id=wxID_EXPORTHKL, kind=wx.ITEM_NORMAL,
    168171            text='Export HKLs...')
     172        self.ExportPDF = parent.Append(help='Select PDF item to enable',id=wxID_EXPORTPDF, kind=wx.ITEM_NORMAL,
     173            text='Export PDF...')
    169174        self.ExportPhase = parent.Append(help='',id=wxID_EXPORTPHASE, kind=wx.ITEM_NORMAL,
    170175            text='Export Phase...')
     
    174179        self.ExportPeakList.Enable(True)
    175180        self.ExportHKL.Enable(False)
     181        self.ExportPDF.Enable(False)
    176182        self.ExportPhase.Enable(False)
    177183        self.ExportCIF.Enable(False)
     
    179185        self.Bind(wx.EVT_MENU, self.OnExportPeakList, id=wxID_EXPORTPEAKLIST)
    180186        self.Bind(wx.EVT_MENU, self.OnExportHKL, id=wxID_EXPORTHKL)
     187        self.Bind(wx.EVT_MENU, self.OnExportPDF, id=wxID_EXPORTPDF)
    181188        self.Bind(wx.EVT_MENU, self.OnExportPhase, id=wxID_EXPORTPHASE)
    182189        self.Bind(wx.EVT_MENU, self.OnExportCIF, id=wxID_EXPORTCIF)
     
    717724                            if dlg2.ShowModal() == wx.ID_OK:
    718725                                Id = G2gd.GetPatternTreeItemId(self,self.root,name)
     726                                self.PatternTree.Delete(Id)
    719727                        finally:
    720728                            dlg2.Destroy()
    721                     else:
    722                         Id = self.PatternTree.AppendItem(parent=self.root,text=outname)
     729                    Id = self.PatternTree.AppendItem(parent=self.root,text=outname)
    723730                    if Id:
    724731                        Sample = {'Scale':[1.0,True],'Type':'Debye-Scherrer','Absorption':[0.0,False],'DisplaceX':[0.0,False],
     
    904911                dlg.Destroy()
    905912       
     913    def GetFileList(fileType,skip=None):        #potentially useful?
     914        fileList = []
     915        Source = ''
     916        id, cookie = self.PatternTree.GetFirstChild(self.root)
     917        while id:
     918            name = self.PatternTree.GetItemText(id)
     919            if fileType in name:
     920                if id == skip:
     921                    Source = name
     922                else:
     923                    fileList.append([False,name,id])
     924            id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     925        if skip:
     926            return fileList,Source
     927        else:
     928            return fileList
     929           
    906930    def OnDataDelete(self, event):
    907931        TextList = ['All Data']
     
    911935        ifIMG = False
    912936        ifHKLF = False
     937        ifPDF = False
    913938        if self.PatternTree.GetCount():
    914939            item, cookie = self.PatternTree.GetFirstChild(self.root)
    915940            while item:
    916941                name = self.PatternTree.GetItemText(item)
    917                 if 'PWDR' in name or 'HKLF' in name or 'IMG' in name:
     942                if 'PWDR' in name or 'HKLF' in name or 'IMG' or 'PDF' in name:
    918943                    if 'PWDR' in name: ifPWDR = True
    919944                    if 'IMG' in name: ifIMG = True
    920945                    if 'HKLF' in name: ifHKLF = True
     946                    if 'PDF' in name: ifPDF = True
    921947                    TextList.append(name)
    922948                item, cookie = self.PatternTree.GetNextChild(self.root, cookie)
    923949            if ifPWDR: TextList.insert(1,'All PWDR')
    924950            if ifIMG: TextList.insert(1,'All IMG')
    925             if ifHKLF: TextList.insert(1,'All HKLF')               
     951            if ifHKLF: TextList.insert(1,'All HKLF')
     952            if ifPDF: TextList.insert(1,'All PDF')               
    926953            dlg = wx.MultiChoiceDialog(self, 'Which data to delete?', 'Delete data', TextList, wx.CHOICEDLG_STYLE)
    927954            try:
     
    937964                    elif 'All HKLF' in DelList:
    938965                        DelList = [item for item in TextList if item[:4] == 'HKLF']
     966                    elif 'All PDF' in DelList:
     967                        DelList = [item for item in TextList if item[:3] == 'PDF']
    939968                    item, cookie = self.PatternTree.GetFirstChild(self.root)
    940969                    while item:
     
    9811010                    while item and not Id:
    9821011                        name = self.PatternTree.GetItemText(item)
    983                         if name[:4] in ['PWDR','HKLF','IMG']:
     1012                        if name[:4] in ['PWDR','HKLF','IMG','PDF']:
    9841013                            Id = item
    9851014                        elif name == 'Controls':
     
    12011230        event.Skip()
    12021231       
     1232    def OnExportPDF(self,event):
     1233        event.Skip()
     1234       
    12031235    def OnExportPhase(self,event):
    12041236        event.Skip()
     
    12061238    def OnExportCIF(self,event):
    12071239        event.Skip()
    1208        
     1240
     1241    def OnMakePDFs(self,event):
     1242        TextList = []
     1243        Names = []
     1244        if self.PatternTree.GetCount():
     1245            id, cookie = self.PatternTree.GetFirstChild(self.root)
     1246            while id:
     1247                name = self.PatternTree.GetItemText(id)
     1248                Names.append(name)
     1249                if 'PWDR' in name:
     1250                    TextList.append([False,name,id])
     1251                id, cookie = self.PatternTree.GetNextChild(self.root, cookie)
     1252            if not len(TextList):
     1253                self.ErrorDialog('Nothing to make PDFs for','There must be at least one "PWDR" pattern')
     1254                return
     1255            dlg = self.CopyDialog(self,'Make PDF controls','Make PDF controls for:',TextList)
     1256            try:
     1257                if dlg.ShowModal() == wx.ID_OK:
     1258                    result = dlg.GetData()
     1259                    for i,item in enumerate(result):
     1260                        ifmake,name,id = item
     1261                        if ifmake:
     1262                            PWDRname = name[4:]
     1263                            Id = self.PatternTree.AppendItem(parent=self.root,text='PDF '+PWDRname)
     1264                            Data = {
     1265                                'Sample':{'Name':name,'Mult':1.0,'Add':0.0},
     1266                                'Sample Bkg.':{'Name':'','Mult':-1.0,'Add':0.0},
     1267                                'Container':{'Name':'','Mult':-1.0,'Add':0.0},
     1268                                'Container Bkg.':{'Name':'','Mult':-1.0,'Add':0.0},'ElList':{},
     1269                                'Geometry':'Cylinder','Diam':1.0,'Pack':0.50,'Form Vol':10.0}
     1270                            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='PDF Controls'),Data)
     1271                            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='S(Q)'+PWDRname),[])       
     1272                            self.PatternTree.SetItemPyData(self.PatternTree.AppendItem(Id,text='G(R)'+PWDRname),[])       
     1273            finally:
     1274                dlg.Destroy()
     1275       
    12091276    def OnRefine(self,event):
    12101277        #works - but it'd be better if it could restore plots
Note: See TracChangeset for help on using the changeset viewer.