Changeset 1069 for trunk/exports


Ignore:
Timestamp:
Sep 30, 2013 11:42:11 AM (8 years ago)
Author:
toby
Message:

finally a working CIF exporter (export mechanism needs configuring); work around windows file names in PyCifRW & missing unicode char

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/exports/G2cif.py

    r1068 r1069  
    7373    import CifFile as cif # PyCifRW from James Hester
    7474    cifdic = {}
    75     dictobj = cif.CifDic(fil)
     75    #dictobj = cif.CifDic(fil)
     76    fp = open(fil,'r')             # patch: open file to avoid windows bug
     77    dictobj = cif.CifDic(fp)
     78    fp.close()
    7679    if DEBUG: print('loaded '+str(fil))
    7780    for item in dictobj.keys():
     
    377380                txt = wx.StaticText(self,wx.ID_ANY,item+"  ")
    378381                fbox.Add(txt,(0,i+1))
     382                # if self.cifdic.get(item):
     383                #     df = self.cifdic[item].get('_definition')
     384                #     if df:
     385                #         txt.SetToolTipString(G2IO.trim(df))
     386                #         but = CIFdefHelp(self,
     387                #                          "Definition for "+item+":\n\n"+G2IO.trim(df),
     388                #                          self.parent,
     389                #                          self.parent.helptxt)
     390                #         fbox.Add(but,(1,i+1),flag=wx.ALIGN_CENTER)
     391                for j,val in enumerate(self.cifblk[item]):
     392                    ent = self.CIFEntryWidget(self.cifblk[item],j,item)
     393                    #fbox.Add(ent,(j+2,i+1),flag=wx.EXPAND|wx.ALL)
     394                    fbox.Add(ent,(j+1,i+1),flag=wx.EXPAND|wx.ALL)
    379395                if self.cifdic.get(item):
    380396                    df = self.cifdic[item].get('_definition')
     
    385401                                         self.parent,
    386402                                         self.parent.helptxt)
    387                         fbox.Add(but,(1,i+1),flag=wx.ALIGN_CENTER)
    388                 for j,val in enumerate(self.cifblk[item]):
    389                     ent = self.CIFEntryWidget(self.cifblk[item],j,item)
    390                     fbox.Add(ent,(j+2,i+1),flag=wx.EXPAND|wx.ALL)
     403                        fbox.Add(but,(j+2,i+1),flag=wx.ALIGN_CENTER)
    391404                rows = max(rows,len(self.cifblk[item]))
    392405            for i in range(rows):
     
    403416                txt = wx.StaticText(self,wx.ID_ANY,item)
    404417                hbox.Add(txt)
     418                ent = self.CIFEntryWidget(self.cifblk,item,item)
     419                hbox.Add(ent)
    405420                if self.cifdic.get(item):
    406421                    df = self.cifdic[item].get('_definition')
     
    412427                                         self.parent.helptxt)
    413428                        hbox.Add(but,0,wx.ALL,2)
    414                 ent = self.CIFEntryWidget(self.cifblk,item,item)
    415                 hbox.Add(ent)
    416429        self.SetSizer(vbox)
    417430        #vbox.Fit(self.parent)
     
    565578                        break
    566579                else:
    567                     print(self.CIF+' not found in path!')
     580                    print("Default CIF template "+self.defaultname+' not found in path!')
    568581                    self.CIF = None
    569582                    CIFtxt = "none! (No template found)"
    570583        elif type(self.CIF) is not list and type(self.CIF) is not tuple:
    571584            if not os.path.exists(self.CIF):
    572                 print("Error: template file has disappeared:"+self.CIF)
     585                print("Error: template file has disappeared: "+self.CIF)
    573586                self.CIF = None
    574587                CIFtxt = "none! (file not found)"
    575588            else:
    576                 if len(self.CIF) < 40:
     589                if len(self.CIF) < 50:
    577590                    CIFtxt = "File: "+self.CIF
    578591                else:
    579                     CIFtxt = "File: ..."+self.CIF[-40:]
     592                    CIFtxt = "File: ..."+self.CIF[-50:]
    580593        else:
    581594            CIFtxt = "Template is customized"
     
    589602        but = wx.Button(panel,wx.ID_ANY,"Edit Template")
    590603        but.Bind(wx.EVT_BUTTON,self._onEditTemplateContents)
     604        if self.CIF is None: but.Disable() # nothing to edit!
    591605        hbox.Add(but,0,0,2)
    592         #self.Add(hbox,0,wx.ALIGN_CENTER)
    593606        self.Add(hbox)
    594607    def _onGetTemplateFile(self,event):
     
    606619            import CifFile as cif # PyCifRW from James Hester
    607620            try:
    608                 cf = cif.ReadCif(fil)
     621                #cf = cif.ReadCif(fil)
     622                fp = open(fil,'r')             # patch: open file to avoid windows bug
     623                cf = cif.ReadCif(fp)
     624                fp.close()
    609625                if len(cf.keys()) == 0: raise Exception,"No CIF data_ blocks found"
    610626                if len(cf.keys()) != 1:
     
    628644            dblk,loopstructure = copy.deepcopy(self.CIF) # don't modify original
    629645        else:
    630             dblk,loopstructure = CIF2dict(cif.ReadCif(self.CIF))
     646            #dblk,loopstructure = CIF2dict(cif.ReadCif(self.CIF))
     647            fp = open(self.CIF,'r')             # patch: open file to avoid windows bug
     648            dblk,loopstructure = CIF2dict(cif.ReadCif(fp))
     649            fp.close()
    631650        dlg = EditCIFtemplate(self.cifdefs,dblk,loopstructure,self.defaultname)
    632651        val = dlg.Post()
     
    773792            elif type(CIFobj) is not list and type(CIFobj) is not tuple:
    774793                if not os.path.exists(CIFobj):
    775                     print("Error: template file has disappeared:"+CIFobj)
     794                    print("Error: requested template file has disappeared: "+CIFobj)
    776795                    return
    777796                fp = open(CIFobj,'r')
     
    784803            txt = "# GSAS-II edited template follows "+txt[txt.index("data_")+5:]
    785804            #txt = txt.replace('data_','#')
    786             print '***** Template ********'
    787             print txt
    788805            WriteCIFitem(txt)
    789806
     
    801818
    802819        def WritePowderTemplate(hist):
    803             '''TODO: insert the phase template ``template_instrument.cif`` or some modified
    804             version for this project
     820            '''insert the powder histogram phase template
     821            for this project
    805822            '''
    806823            histblk = self.Histograms[hist]["Sample Parameters"]
     
    808825
    809826        def WriteSnglXtalTemplate(hist):
    810             '''TODO: insert the single-crystal histogram template
     827            '''insert the single-crystal histogram template
    811828            for this project
    812829            '''
     
    20682085        # Start writing the CIF - single block
    20692086        #======================================================================
     2087        print('Writing CIF output to file '+fil+"...")
    20702088        openCIF(fil)
    20712089        if oneblock:
     
    22132231        WriteCIFitem('#--' + 15*'eof--' + '#')
    22142232        closeCIF()
     2233        print("...export complete")
Note: See TracChangeset for help on using the changeset viewer.