/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Model/resource.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Model/resource.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 709 by jonathan, Wed Apr 23 08:45:44 2003 UTC revision 727 by jonathan, Thu Apr 24 16:06:16 2003 UTC
# Line 10  import Thuban Line 10  import Thuban
10  from Thuban.Model.load import XMLReader  from Thuban.Model.load import XMLReader
11  from Thuban.Model.save import XMLWriter  from Thuban.Model.save import XMLWriter
12  from Thuban.Model.proj import Projection, ProjFile  from Thuban.Model.proj import Projection, ProjFile
13    from xml.sax import SAXParseException
14    
15  projdir = \  projdir = \
16          os.path.join(Thuban.__path__[0], os.pardir, "Resources", "Projections")          os.path.join(Thuban.__path__[0], os.pardir, "Resources", "Projections")
# Line 19  usrdir  = os.path.expanduser("~/.thuban" Line 20  usrdir  = os.path.expanduser("~/.thuban"
20  PROJ_EXT = ".proj"  PROJ_EXT = ".proj"
21    
22  def ReadProjFile(filename):  def ReadProjFile(filename):
23      """Read a single .proj file and return a ProjFile object."""      """Read a single .proj file and return a ProjFile object.
24        
25      projs = []      Raises IOError if the file cannot be opened.
26      try:      Raises OSError if the file cannot be read.
27          handler = ProjFileReader()      Raises SAXParseException if the file is not valid XML.
28          handler.read(filename)      """
         pf = handler.GetProjFile()  
     except OSError:  
         pass  
29    
30      return pf      handler = ProjFileReader()
31        handler.read(filename)
32        return handler.GetProjFile()
33    
34  def WriteProjFile(pf):  def WriteProjFile(pf):
35        """Write a single .proj file
36    
37        Raises IOError if the file cannot be written.
38        """
39    
40      saver = ProjFileSaver(pf)      saver = ProjFileSaver(pf)
41      saver.write(pf.GetFileName())      saver.write(pf.GetFileName())
42    
# Line 42  def GetProjFiles(dir): Line 47  def GetProjFiles(dir):
47    
48      list = []      list = []
49      try:      try:
50          for file in filter(lambda s: s.endswith(PROJ_EXT), os.listdir(dir)):          dirlist = os.listdir(dir)
             filename = os.path.join(dir, file)  
             list.append(ReadProjFile(filename))  
51      except OSError:      except OSError:
52          pass          pass # if we can't get a directory listing just return []
53        else:
54            for file in filter(lambda s: s.endswith(PROJ_EXT), dirlist):
55                try:
56                    filename = os.path.join(dir, file)
57                    list.append(ReadProjFile(filename))
58                except (OSError, IOError, SAXParseException):
59                    pass # just move onto the next file
60    
61      return list      return list
62    
63  def GetSystemProjFiles():  def GetSystemProjFiles():
64      """Return a list of ProjFile objects from files that are      """Return a list of ProjFile objects from files that are
65      supplied by Thuban.      supplied by Thuban.
66    
67        If no files could not be opened return a list with one
68        empty projection file set to store data in the default file.
69      """      """
70      return GetProjFiles(projdir)      filename = os.path.join(projdir, "defaults.proj")
71        try:
72            return [ReadProjFile(filename)]
73        except (OSError, IOError, SAXParseException):
74            return [ProjFile(filename)]
75    
76  def GetUserProjFiles():  def GetUserProjFiles():
77      """Return a list of ProjFile objects from files that are user-defined."""      """Return a list of ProjFile objects from files that are user-defined.
78      return GetProjFiles(usrdir)  
79        If no files could not be opened return a list with one
80        empty projection file set to store data in the default file.
81        """
82    
83        filename = os.path.join(usrdir, "user.proj")
84        try:
85            return [ReadProjFile(filename)]
86        except (OSError, IOError, SAXParseException):
87            return [ProjFile(filename)]
88    
89  class ProjFileReader(XMLReader):  class ProjFileReader(XMLReader):
90    

Legend:
Removed from v.709  
changed lines
  Added in v.727

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26