/[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 708 by jonathan, Wed Apr 16 16:39:49 2003 UTC revision 709 by jonathan, Wed Apr 23 08:45:44 2003 UTC
# Line 7  Line 7 
7    
8  import os  import os
9  import Thuban  import Thuban
10  from Thuban.Model.load import XMLProcessor, load_xmlfile  from Thuban.Model.load import XMLReader
11  from Thuban.Model.save import XMLSaver  from Thuban.Model.save import XMLWriter
12  from Thuban.Model.proj import Projection, ProjFile  from Thuban.Model.proj import Projection, ProjFile
13    
14  projdir = \  projdir = \
# Line 23  def ReadProjFile(filename): Line 23  def ReadProjFile(filename):
23    
24      projs = []      projs = []
25      try:      try:
26          handler = ProjFileReader(filename)          handler = ProjFileReader()
27            handler.read(filename)
         load_xmlfile(filename, handler)  
28          pf = handler.GetProjFile()          pf = handler.GetProjFile()
29      except OSError:      except OSError:
30          pass          pass
# Line 36  def WriteProjFile(pf): Line 35  def WriteProjFile(pf):
35      saver = ProjFileSaver(pf)      saver = ProjFileSaver(pf)
36      saver.write(pf.GetFileName())      saver.write(pf.GetFileName())
37    
38  def GetProjections(dir):  def GetProjFiles(dir):
39      """Read all .proj files in the given directory and      """Read all .proj files in the given directory and
40      return a list of ProjFile objects.      return a list of ProjFile objects.
41      """      """
# Line 45  def GetProjections(dir): Line 44  def GetProjections(dir):
44      try:      try:
45          for file in filter(lambda s: s.endswith(PROJ_EXT), os.listdir(dir)):          for file in filter(lambda s: s.endswith(PROJ_EXT), os.listdir(dir)):
46              filename = os.path.join(dir, file)              filename = os.path.join(dir, file)
47              list.extend(ReadProjFile(filename))              list.append(ReadProjFile(filename))
48      except OSError:      except OSError:
49          pass          pass
50    
51      return list      return list
52    
53  def GetSuppliedProjections():  def GetSystemProjFiles():
54      """Return a list of ProjFile objects from files that are      """Return a list of ProjFile objects from files that are
55      supplied by Thuban.      supplied by Thuban.
56      """      """
57      return GetProjections(projdir)      return GetProjFiles(projdir)
58    
59  def GetUserProjections():  def GetUserProjFiles():
60      """Return a list of ProjFile objects from files that are user-defined."""      """Return a list of ProjFile objects from files that are user-defined."""
61      return GetProjections(usrdir)      return GetProjFiles(usrdir)
62    
63  class ProjFileReader(XMLProcessor):  class ProjFileReader(XMLReader):
64    
65      def __init__(self, filename):      def __init__(self):
66          XMLProcessor.__init__(self, os.path.dirname(filename))          XMLReader.__init__(self)
67                    self.__pf = ProjFile("")
68          self.pf = ProjFile(filename)  
69            XMLReader.AddDispatchers(self,
70                {'projection': ("start_projection", "end_projection"),
71                 'parameter':  ("start_parameter", None)})
72                
73        def read(self, file_or_filename):
74            XMLReader.read(self, file_or_filename)
75    
76            self.__pf.SetFileName(XMLReader.GetFileName(self))
77                    
78      def start_projection(self, name, qname, attrs):      def start_projection(self, name, qname, attrs):
79          self.params = []          self.params = []
80          self.name = attrs.get((None, 'name'), "Unknown")          self.name = attrs.get((None, 'name'), "Unknown")
     XMLProcessor.start_dispatcher['projection'] = "start_projection"  
81    
82      def end_projection(self, name, qname):      def end_projection(self, name, qname):
83          self.pf.Add(Projection(self.params, self.name))          self.__pf.Add(Projection(self.params, self.name))
     XMLProcessor.end_dispatcher['projection'] = "end_projection"  
84    
85      def start_parameter(self, name, qname, attrs):      def start_parameter(self, name, qname, attrs):
86          s = attrs.get((None, 'value'))          s = attrs.get((None, 'value'))
87          s = str(s) # we can't handle unicode in proj          s = str(s) # we can't handle unicode in proj
88          self.params.append(s)          self.params.append(s)
     XMLProcessor.start_dispatcher['parameter'] = "start_parameter"  
89    
90      def GetProjFile(self):      def GetProjFile(self):
91          return self.pf          return self.__pf
92    
93    
94  class ProjFileSaver(XMLSaver):  class ProjFileSaver(XMLWriter):
95    
96      def __init__(self, pf):      def __init__(self, pf):
97          XMLSaver.__init__(self)          XMLWriter.__init__(self)
98          self.pf = pf          self.__pf = pf
99    
100      def write(self, file_or_filename):      def write(self, file_or_filename):
101          XMLSaver.write(self, file_or_filename)          XMLWriter.write(self, file_or_filename)
102    
103          self.write_header("projfile", "thuban.dtd")          self.write_header("projfile", "thuban.dtd")
104          self.write_projfile(self.pf)          self.write_projfile(self.__pf)
105          self.close()          self.close()
106    
107      def write_projfile(self, pf):      def write_projfile(self, pf):
# Line 107  class ProjFileSaver(XMLSaver): Line 111  class ProjFileSaver(XMLSaver):
111          for p in pf.GetProjections():          for p in pf.GetProjections():
112              self.open_element("projection", {"name": p.GetName()})              self.open_element("projection", {"name": p.GetName()})
113    
114              for param in p.GetParameters():              for param in p.GetAllParameters():
115                  self.write_element("parameter", {"value": param})                  self.write_element("parameter", {"value": param})
116    
117              self.close_element("projection")              self.close_element("projection")

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26