Changeset 4406


Ignore:
Timestamp:
Apr 20, 2020 8:54:19 PM (18 months ago)
Author:
toby
Message:

don't allow used PWDR or HKLF histograms to be deleted

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIdataGUI.py

    r4400 r4406  
    39053905        nItems = {'PWDR':0,'SASD':0,'REFD':0,'IMG':0,'HKLF':0,'PDF':0}
    39063906        PDFnames = []
    3907         if self.GPXtree.GetCount():
    3908             item, cookie = self.GPXtree.GetFirstChild(self.root)
    3909             while item:
    3910                 name = self.GPXtree.GetItemText(item)
    3911                 if name not in ['Notebook','Controls','Covariance','Constraints',
    3912                     'Restraints','Phases','Rigid bodies'] and 'Sequential' not in name:
    3913                     if 'PWDR' in name[:4]: nItems['PWDR'] += 1
    3914                     if 'SASD' in name[:4]: nItems['SASD'] += 1
    3915                     if 'REFD' in name[:4]: nItems['REFD'] += 1
    3916                     if 'IMG' in name[:3]:  nItems['IMG'] += 1
    3917                     if 'HKLF' in name[:4]: nItems['HKLF'] += 1
    3918                     if 'PDF' in name[:3]:
    3919                         PDFnames.append(name)
    3920                         nItems['PDF'] += 1
    3921                     TextList.append(name)
    3922                 item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
    3923             for pdfName in PDFnames:
    3924                 try:
    3925                     TextList.remove('PWDR'+pdfName[4:])
    3926                 except ValueError:
    3927                     print (u'PWDR'+pdfName[4:]+u' for '+pdfName+u' not found')
    3928             dlg = G2G.G2MultiChoiceDialog(self, 'Which data to delete?', 'Delete data', TextList, wx.CHOICEDLG_STYLE)
     3907        Histograms,Phases = self.GetUsedHistogramsAndPhasesfromTree()
     3908        if not self.GPXtree.GetCount():
     3909            G2G.G2MessageBox(self,'No tree items to be deleted',
     3910                                 'Nothing to delete')
     3911            return           
     3912        item, cookie = self.GPXtree.GetFirstChild(self.root)
     3913        used = False
     3914        while item:
     3915            name = self.GPXtree.GetItemText(item)
     3916            if name not in ['Notebook','Controls','Covariance','Constraints',
     3917                'Restraints','Phases','Rigid bodies'] and 'Sequential' not in name:
     3918                if 'PWDR' in name[:4]:
     3919                    nItems['PWDR'] += 1
     3920                    if name in Histograms:
     3921                        used = True
     3922                        item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
     3923                        continue
     3924                if 'SASD' in name[:4]: nItems['SASD'] += 1
     3925                if 'REFD' in name[:4]: nItems['REFD'] += 1
     3926                if 'IMG' in name[:3]:  nItems['IMG'] += 1
     3927                if 'HKLF' in name[:4]:
     3928                    nItems['HKLF'] += 1
     3929                    if name in Histograms:
     3930                        used = True
     3931                        item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
     3932                        continue
     3933                if 'PDF' in name[:3]:
     3934                    PDFnames.append(name)
     3935                    nItems['PDF'] += 1
     3936                TextList.append(name)
     3937            item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
     3938        for pdfName in PDFnames:
    39293939            try:
    3930                 if dlg.ShowModal() == wx.ID_OK:
    3931                     result = dlg.GetSelections()
    3932                     for i in result: DelList.append(TextList[i])
    3933                     item, cookie = self.GPXtree.GetFirstChild(self.root)
    3934                     while item:
    3935                         itemName = self.GPXtree.GetItemText(item)
    3936                         if itemName in DelList:
    3937                             if 'PWDR' in itemName[:4]: nItems['PWDR'] -= 1
    3938                             elif 'SASD' in itemName[:4]: nItems['SASD'] -= 1
    3939                             elif 'REFD' in itemName[:4]: nItems['REFD'] -= 1
    3940                             elif 'IMG' in itemName[:3]: nItems['IMG'] -= 1
    3941                             elif 'HKLF' in itemName[:4]: nItems['HKLF'] -= 1
    3942                             elif 'PDF' in itemName[:3]: nItems['PDF'] -= 1
    3943                             DelItemList.append(item)
    3944                         item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
    3945                     for item in DelItemList:
    3946                         self.GPXtree.Delete(item)
    3947                     self.PickId = 0
    3948                     self.PickIdText = None
    3949                     self.PatternId = 0
    3950                     if nItems['PWDR']:
    3951                         wx.CallAfter(G2plt.PlotPatterns,self,True)
    3952                     else:
    3953                         self.G2plotNB.Delete('Powder Patterns')
    3954                     if not nItems['IMG']:
    3955                         self.G2plotNB.Delete('2D Powder Image')
    3956                     if not nItems['HKLF']:
    3957                         self.G2plotNB.Delete('Structure Factors')
    3958                         if '3D Structure Factors' in self.G2plotNB.plotList:
    3959                             self.G2plotNB.Delete('3D Structure Factors')
    3960             finally:
    3961                 dlg.Destroy()
     3940                TextList.remove('PWDR'+pdfName[4:])
     3941            except ValueError:
     3942                print (u'PWDR'+pdfName[4:]+u' for '+pdfName+u' not found')
     3943        if len(TextList) == 0 and used:
     3944            G2G.G2MessageBox(self,'All histograms are used. You must remove them from phases before they can be deleted',
     3945                                 'Nothing to delete')
     3946            return
     3947        elif len(TextList) == 0:
     3948            G2G.G2MessageBox(self,'None of the tree items are allowed to be deleted',
     3949                                 'Nothing to delete')
     3950            return
     3951       
     3952        dlg = G2G.G2MultiChoiceDialog(self, 'Which data to delete?', 'Delete data', TextList, wx.CHOICEDLG_STYLE)
     3953        try:
     3954            if dlg.ShowModal() == wx.ID_OK:
     3955                result = dlg.GetSelections()
     3956                for i in result: DelList.append(TextList[i])
     3957                item, cookie = self.GPXtree.GetFirstChild(self.root)
     3958                while item:
     3959                    itemName = self.GPXtree.GetItemText(item)
     3960                    if itemName in DelList:
     3961                        if 'PWDR' in itemName[:4]: nItems['PWDR'] -= 1
     3962                        elif 'SASD' in itemName[:4]: nItems['SASD'] -= 1
     3963                        elif 'REFD' in itemName[:4]: nItems['REFD'] -= 1
     3964                        elif 'IMG' in itemName[:3]: nItems['IMG'] -= 1
     3965                        elif 'HKLF' in itemName[:4]: nItems['HKLF'] -= 1
     3966                        elif 'PDF' in itemName[:3]: nItems['PDF'] -= 1
     3967                        DelItemList.append(item)
     3968                    item, cookie = self.GPXtree.GetNextChild(self.root, cookie)
     3969                for item in DelItemList:
     3970                    self.GPXtree.Delete(item)
     3971                self.PickId = 0
     3972                self.PickIdText = None
     3973                self.PatternId = 0
     3974                if nItems['PWDR']:
     3975                    wx.CallAfter(G2plt.PlotPatterns,self,True)
     3976                else:
     3977                    self.G2plotNB.Delete('Powder Patterns')
     3978                if not nItems['IMG']:
     3979                    self.G2plotNB.Delete('2D Powder Image')
     3980                if not nItems['HKLF']:
     3981                    self.G2plotNB.Delete('Structure Factors')
     3982                    if '3D Structure Factors' in self.G2plotNB.plotList:
     3983                        self.G2plotNB.Delete('3D Structure Factors')
     3984        finally:
     3985            dlg.Destroy()
    39623986               
    39633987    def OnPlotDelete(self,event):
Note: See TracChangeset for help on using the changeset viewer.