Changeset 1069


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

Location:
trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/GSASIIgrid.py

    r1067 r1069  
    825825            if CopyButton:
    826826                import wx.lib.colourselect as wscs
    827                 but = wscs.ColourSelect(label=u'\u2193', parent=panel,
     827                but = wscs.ColourSelect(label='v', # would like to use u'\u2193' or u'\u25BC' but not in WinXP
     828                                        # is there a way to test?
     829                                        parent=panel,
    828830                                        colour=(255,255,200),
    829831                                        size=wx.Size(30,23),
     
    15621564                                   ,wx.OK)
    15631565            dlg.ShowModal()
     1566            dlg.Destroy()
    15641567            return
    15651568        wx.BeginBusyCursor()
     
    15721575                                   wx.OK)
    15731576            dlg.ShowModal()
     1577            dlg.Destroy()
    15741578            return
    15751579        print 'Installed GSAS-II version: '+local
     
    15821586                                   wx.OK)
    15831587            dlg.ShowModal()
     1588            dlg.Destroy()
    15841589            return
    15851590        print 'GSAS-II version on server: '+repos
     
    15901595                                   wx.OK)
    15911596            dlg.ShowModal()
     1597            dlg.Destroy()
    15921598            return
    15931599        mods = GSASIIpath.svnFindLocalChanges()
     
    16061612                                   'Local GSAS-II Mods',
    16071613                                   wx.OK|wx.CANCEL)
    1608             if dlg.ShowModal() != wx.ID_OK: return
     1614            if dlg.ShowModal() != wx.ID_OK:
     1615                dlg.Destroy()
     1616                return
     1617            else:
     1618                dlg.Destroy()
    16091619        else:
    16101620            dlg = wx.MessageDialog(self.frame,
     
    16171627                dlg.Destroy()
    16181628                return
    1619         dlg.Destroy()
     1629            dlg.Destroy()
    16201630        print 'start updates'
    16211631        dlg = wx.MessageDialog(self.frame,
     
    16281638            dlg.Destroy()
    16291639            return
     1640        dlg.Destroy()
    16301641        self.frame.OnFileSave(event)
    16311642        GSASIIpath.svnUpdateProcess(projectfile=self.frame.GSASprojectfile)
  • 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")
  • trunk/imports/G2phase_CIF.py

    r1046 r1069  
    7575            self.ShowBusy() # this can take a while
    7676            ciffile = 'file:'+urllib.pathname2url(filename)
    77             cf = cif.ReadCif(ciffile)
     77            #cf = cif.ReadCif(ciffile)
     78            fp = open(ciffile,'r')             # patch: open file to avoid windows bug
     79            cf = cif.ReadCif(fp)
     80            fp.close()
    7881            self.DoneBusy()
    7982            #print cf
  • trunk/imports/G2pwd_CIF.py

    r1046 r1069  
    101101                self.ShowBusy() # this can take a while
    102102                ciffile = 'file:'+urllib.pathname2url(filename)
    103                 cf = cif.ReadCif(ciffile)
     103                #cf = cif.ReadCif(ciffile)
     104                fp = open(ciffile,'r')             # patch: open file to avoid windows bug
     105                cf = cif.ReadCif(fp)
     106                fp.close()
    104107                self.DoneBusy()
    105108        except Exception as detail:
  • trunk/imports/G2sfact_CIF.py

    r1046 r1069  
    6464                self.ShowBusy() # this can take a while
    6565                ciffile = 'file:'+urllib.pathname2url(filename)
    66                 cf = cif.ReadCif(ciffile)
     66                #cf = cif.ReadCif(ciffile)
     67                fp = open(ciffile,'r')             # patch: open file to avoid windows bug
     68                cf = cif.ReadCif(fp)
     69                fp.close()
    6770                self.DoneBusy()
    6871            # scan blocks for reflections
Note: See TracChangeset for help on using the changeset viewer.