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

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

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

revision 723 by bh, Thu Apr 24 15:31:53 2003 UTC revision 772 by jonathan, Tue Apr 29 14:34:11 2003 UTC
# Line 76  class XMLReader(xml.sax.handler.ContentH Line 76  class XMLReader(xml.sax.handler.ContentH
76    
77      def __init__(self):      def __init__(self):
78          self.chars = ''          self.chars = ''
         self.__parser = None  
79          self.__directory = ""          self.__directory = ""
80          self.__dispatchers = {}          self.__dispatchers = {}
81    
# Line 91  class XMLReader(xml.sax.handler.ContentH Line 90  class XMLReader(xml.sax.handler.ContentH
90              self.__directory = os.path.dirname(filename)              self.__directory = os.path.dirname(filename)
91              self.__file = open(filename)              self.__file = open(filename)
92    
93          if self.__parser is None:          parser = make_parser()
94              self.__parser = make_parser()          parser.setContentHandler(self)
95              self.__parser.setContentHandler(self)          parser.setErrorHandler(ErrorHandler())
96              self.__parser.setErrorHandler(ErrorHandler())          parser.setFeature(xml.sax.handler.feature_namespaces, 1)
97              self.__parser.setFeature(xml.sax.handler.feature_namespaces, 1)  
98            #
99              #          # Well, this isn't pretty, but it appears that if you
100              # Well, this isn't pretty, but it appears that if you          # use Python 2.2 without the site-package _xmlplus then
101              # use Python 2.2 without the site-package _xmlplus then          # the following will fail, and without them it will work.
102              # the following will fail, and without them it will work.          # However, if you do have the site-package and you don't
103              # However, if you do have the site-package and you don't          # call these functions, the reader raises an exception
104              # call these functions, the reader raises an exception          #
105              #          # The reason we set these to 0 in the first place is
106              # The reason we set these to 0 in the first place is          # because there is an unresolved issue with external
107              # because there is an unresolved issue with external          # entities causing an exception in the reader
108              # entities causing an exception in the reader          #
109              #          try:
110              try:              parser.setFeature(xml.sax.handler.feature_validation,0)
111                  self.__parser.setFeature(xml.sax.handler.feature_validation,0)              parser.setFeature(xml.sax.handler.feature_external_ges,0)
112                  self.__parser.setFeature(xml.sax.handler.feature_external_ges,0)              parser.setFeature(xml.sax.handler.feature_external_pes,0)
113                  self.__parser.setFeature(xml.sax.handler.feature_external_pes,0)          except SAXNotRecognizedException:
114              except SAXNotRecognizedException:              pass
                 pass  
115    
116          self.__parser.parse(self.__file)          parser.parse(self.__file)
117    
118          self.close()          self.close()
119    
120      def close(self):      def close(self):
121          self.__file.close()          self.__file.close()
122                    
123      def GetFileName(self):      def GetFilename(self):
124          if hasattr(self.__file, "name"):          if hasattr(self.__file, "name"):
125              return self.__file.name              return self.__file.name
126    
# Line 201  class SessionLoader(XMLReader): Line 199  class SessionLoader(XMLReader):
199      def start_map(self, name, qname, attrs):      def start_map(self, name, qname, attrs):
200          """Start a map."""          """Start a map."""
201          self.aMap = Map(attrs.get((None, 'title'), None))          self.aMap = Map(attrs.get((None, 'title'), None))
202            self.__projReceiver = self.aMap
203    
204      def end_map(self, name, qname):      def end_map(self, name, qname):
205          self.theSession.AddMap(self.aMap)          self.theSession.AddMap(self.aMap)
206            self.__projReceiver = None
207    
208      def start_projection(self, name, qname, attrs):      def start_projection(self, name, qname, attrs):
209            self.ProjectionName = attrs.get((None, 'name'), None)
210          self.ProjectionParams = [ ]          self.ProjectionParams = [ ]
211    
212      def end_projection(self, name, qname):      def end_projection(self, name, qname):
213          self.aMap.SetProjection(Projection(self.ProjectionParams))          self.__projReceiver.SetProjection(
214                Projection(self.ProjectionParams, self.ProjectionName))
215    
216      def start_parameter(self, name, qname, attrs):      def start_parameter(self, name, qname, attrs):
217          s = attrs.get((None, 'value'))          s = attrs.get((None, 'value'))
# Line 226  class SessionLoader(XMLReader): Line 228  class SessionLoader(XMLReader):
228          title = attrs.get((None, 'title'), "")          title = attrs.get((None, 'title'), "")
229          filename = attrs.get((None, 'filename'), "")          filename = attrs.get((None, 'filename'), "")
230          filename = os.path.join(self.GetDirectory(), filename)          filename = os.path.join(self.GetDirectory(), filename)
231            visible  = attrs.get((None, 'visible'), "true")
232          fill = parse_color(attrs.get((None, 'fill'), "None"))          fill = parse_color(attrs.get((None, 'fill'), "None"))
233          stroke = parse_color(attrs.get((None, 'stroke'), "#000000"))          stroke = parse_color(attrs.get((None, 'stroke'), "#000000"))
234          stroke_width = int(attrs.get((None, 'stroke_width'), "1"))          stroke_width = int(attrs.get((None, 'stroke_width'), "1"))
235          self.aLayer = layer_class(title,          self.aLayer = layer_class(title,
236                                    self.theSession.OpenShapefile(filename),                                    self.theSession.OpenShapefile(filename),
237                                    fill = fill, stroke = stroke,                                    fill = fill, stroke = stroke,
238                                    lineWidth = stroke_width)                                    lineWidth = stroke_width,
239                                      visible = visible != "false")
240    
241            self.__projReceiver = self.aLayer
242    
243      def end_layer(self, name, qname):      def end_layer(self, name, qname):
244          self.aMap.AddLayer(self.aLayer)          self.aMap.AddLayer(self.aLayer)
245            self.__projReceiver = None
246    
247      def start_classification(self, name, qname, attrs):      def start_classification(self, name, qname, attrs):
248          field = attrs.get((None, 'field'), None)          field = attrs.get((None, 'field'), None)

Legend:
Removed from v.723  
changed lines
  Added in v.772

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26