/[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 718 by jonathan, Wed Apr 23 10:39:46 2003 UTC revision 1132 by frank, Thu Jun 5 13:27:17 2003 UTC
# Line 6  Line 6 
6  # Read the file COPYING coming with Thuban for details.  # Read the file COPYING coming with Thuban for details.
7    
8  import os  import os
9    import os.path
10    from tempfile import mktemp
11    
12  import Thuban  import Thuban
13    from Thuban import _
14    
15  from Thuban.Model.load import XMLReader  from Thuban.Model.load import XMLReader
16  from Thuban.Model.save import XMLWriter  from Thuban.Model.save import XMLWriter
17  from Thuban.Model.proj import Projection, ProjFile  from Thuban.Model.proj import Projection, ProjFile
18    from xml.sax import SAXParseException
19    
20  projdir = \  projdir = \
21          os.path.join(Thuban.__path__[0], os.pardir, "Resources", "Projections")          os.path.join(Thuban.__path__[0], os.pardir, "Resources", "Projections")
22    
23  usrdir  = os.path.expanduser("~/.thuban")  if os.name == 'nt':
24        # This should result in something like the user directory ...
25        guess = os.path.dirname(os.path.dirname(os.path.dirname(mktemp())))
26        usrdir = os.path.join(guess, ".thuban")
27        if not os.path.isdir(usrdir):
28            os.mkdir(usrdir)
29    else:
30        usrdir  = os.path.expanduser("~/.thuban")
31    
32  PROJ_EXT = ".proj"  PROJ_EXT = ".proj"
33    
# Line 31  def ReadProjFile(filename): Line 44  def ReadProjFile(filename):
44      return handler.GetProjFile()      return handler.GetProjFile()
45    
46  def WriteProjFile(pf):  def WriteProjFile(pf):
47        """Write a single .proj file
48    
49        Raises IOError if the file cannot be written.
50        """
51    
52      saver = ProjFileSaver(pf)      saver = ProjFileSaver(pf)
53      saver.write(pf.GetFileName())      saver.write(pf.GetFilename())
54    
55  def GetProjFiles(dir):  def GetProjFiles(dir):
56      """Read all .proj files in the given directory and      """Read all .proj files in the given directory and
# Line 57  def GetProjFiles(dir): Line 75  def GetProjFiles(dir):
75  def GetSystemProjFiles():  def GetSystemProjFiles():
76      """Return a list of ProjFile objects from files that are      """Return a list of ProjFile objects from files that are
77      supplied by Thuban.      supplied by Thuban.
78    
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      return GetProjFiles(projdir)      filename = os.path.join(projdir, "defaults.proj")
83        try:
84            return [ReadProjFile(filename)]
85        except (OSError, IOError, SAXParseException):
86            return [ProjFile(filename)]
87    
88  def GetUserProjFiles():  def GetUserProjFiles():
89      """Return a list of ProjFile objects from files that are user-defined."""      """Return a list of ProjFile objects from files that are user-defined.
90      return GetProjFiles(usrdir)  
91        If no files could not be opened return a list with one
92        empty projection file set to store data in the default file.
93        """
94    
95        filename = os.path.join(usrdir, "user.proj")
96        try:
97            return [ReadProjFile(filename)]
98        except (OSError, IOError, SAXParseException):
99            return [ProjFile(filename)]
100    
101  class ProjFileReader(XMLReader):  class ProjFileReader(XMLReader):
102    
# Line 77  class ProjFileReader(XMLReader): Line 111  class ProjFileReader(XMLReader):
111      def read(self, file_or_filename):      def read(self, file_or_filename):
112          XMLReader.read(self, file_or_filename)          XMLReader.read(self, file_or_filename)
113    
114          self.__pf.SetFileName(XMLReader.GetFileName(self))          self.__pf.SetFilename(XMLReader.GetFilename(self))
115                    
116      def start_projection(self, name, qname, attrs):      def start_projection(self, name, qname, attrs):
117          self.params = []          self.params = []
118          self.name = attrs.get((None, 'name'), "Unknown")          self.name = self.encode(attrs.get((None, 'name'), _("Unknown")))
119    
120      def end_projection(self, name, qname):      def end_projection(self, name, qname):
121          self.__pf.Add(Projection(self.params, self.name))          self.__pf.Add(Projection(self.params, self.name))
# Line 104  class ProjFileSaver(XMLWriter): Line 138  class ProjFileSaver(XMLWriter):
138      def write(self, file_or_filename):      def write(self, file_or_filename):
139          XMLWriter.write(self, file_or_filename)          XMLWriter.write(self, file_or_filename)
140    
141          self.write_header("projfile", "thuban.dtd")          self.write_header("projfile", "projfile.dtd")
142          self.write_projfile(self.__pf)          self.write_projfile(self.__pf)
143          self.close()          self.close()
144    

Legend:
Removed from v.718  
changed lines
  Added in v.1132

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26