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

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

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

revision 710 by jonathan, Wed Apr 23 08:45:57 2003 UTC revision 892 by frank, Mon May 12 10:45:47 2003 UTC
# Line 23  import Thuban.Lib.fileutil Line 23  import Thuban.Lib.fileutil
23    
24  from Thuban.Model.color import Color  from Thuban.Model.color import Color
25    
26  from Thuban.Model.classification import *  from Thuban.Model.classification import \
27        ClassGroupDefault, ClassGroupSingleton, ClassGroupRange, ClassGroupMap
28    
29  #  #
30  # one level of indention  # one level of indention
# Line 139  class XMLWriter: Line 140  class XMLWriter:
140    
141      def __write_attribs(self, attrs):      def __write_attribs(self, attrs):
142          for name, value in attrs.items():          for name, value in attrs.items():
143              self.file.write(' %s="%s"' % (escape(name), escape(value)))              self.file.write(' %s="%s"' % (self.encode(name),
144                                              self.encode(value)))
145            
146        def encode(self, str):
147            """Assume that str is in Latin1, escape it, and encode it in UTF-8.
148            
149            If str is None, return None
150            """
151    
152            if str is not None:
153                return unicode(escape(str),'latin1').encode("utf8")
154                #return escape(str).encode("utf8")
155            else:
156                return None
157    
158  class SessionSaver(XMLWriter):  class SessionSaver(XMLWriter):
159    
160      """Class to serialize a session into an XML file.      """Class to serialize a session into an XML file.
# Line 199  class SessionSaver(XMLWriter): Line 213  class SessionSaver(XMLWriter):
213          element, call write_layer for each layer contained in the map          element, call write_layer for each layer contained in the map
214          and finally call write_label_layer to write the label layer.          and finally call write_label_layer to write the label layer.
215          """          """
216          self.open_element('map title="%s"' % escape(map.title))          self.open_element('map title="%s"' % self.encode(map.title))
217          self.write_projection(map.projection)          self.write_projection(map.projection)
218          for layer in map.Layers():          for layer in map.Layers():
219              self.write_layer(layer)              self.write_layer(layer)
# Line 210  class SessionSaver(XMLWriter): Line 224  class SessionSaver(XMLWriter):
224          """Write the projection.          """Write the projection.
225          """          """
226          if projection and len(projection.params) > 0:          if projection and len(projection.params) > 0:
227              self.open_element("projection")              self.open_element("projection", {"name": projection.GetName()})
228              for param in projection.params:              for param in projection.params:
229                  self.write_element('parameter value="%s"' % escape(param))                  self.write_element('parameter value="%s"' %
230                                       self.encode(param))
231              self.close_element("projection")              self.close_element("projection")
232    
233      def write_layer(self, layer, attrs = None):      def write_layer(self, layer, attrs = None):
# Line 232  class SessionSaver(XMLWriter): Line 247  class SessionSaver(XMLWriter):
247          attrs["stroke"]       = lc.GetDefaultLineColor().hex()          attrs["stroke"]       = lc.GetDefaultLineColor().hex()
248          attrs["stroke_width"] = str(lc.GetDefaultLineWidth())          attrs["stroke_width"] = str(lc.GetDefaultLineWidth())
249          attrs["fill"]         = lc.GetDefaultFill().hex()          attrs["fill"]         = lc.GetDefaultFill().hex()
250            attrs["visible"]      = ("false", "true")[int(layer.Visible())]
251    
252          self.open_element("layer", attrs)          self.open_element("layer", attrs)
253    
254            proj = layer.GetProjection()
255            if proj is not None:
256                self.write_projection(proj)
257    
258          self.write_classification(layer)          self.write_classification(layer)
259    
260          self.close_element("layer")          self.close_element("layer")
261    
262      def write_classification(self, layer, attrs = None):      def write_classification(self, layer, attrs = None):
# Line 256  class SessionSaver(XMLWriter): Line 278  class SessionSaver(XMLWriter):
278          self.open_element("classification", attrs)          self.open_element("classification", attrs)
279    
280    
281          types = [[lambda p: 'clnull label="%s"' % p.GetLabel(),          types = [[lambda p: 'clnull label="%s"' % self.encode(p.GetLabel()),
282                    lambda p: 'clnull'],                    lambda p: 'clnull'],
283                   [lambda p: 'clpoint label="%s" value="%s"' %                   [lambda p: 'clpoint label="%s" value="%s"' %
284                               (p.GetLabel(), str(p.GetValue())),                               (self.encode(p.GetLabel()), str(p.GetValue())),
285                    lambda p: 'clpoint'],                    lambda p: 'clpoint'],
286                   [lambda p: 'clrange label="%s" min="%s" max="%s"' %                   [lambda p: 'clrange label="%s" range="%s"' %
287                               (p.GetLabel(),                               (self.encode(p.GetLabel()),
288                                str(p.GetMin()), (str(p.GetMax()))),                                str(p.GetRange())),
289                    lambda p: 'clrange']]                    lambda p: 'clrange']]
290    
291          def write_class_group(group):          def write_class_group(group):
# Line 299  class SessionSaver(XMLWriter): Line 321  class SessionSaver(XMLWriter):
321              for label in labels:              for label in labels:
322                  self.write_element(('label x="%g" y="%g" text="%s"'                  self.write_element(('label x="%g" y="%g" text="%s"'
323                                      ' halign="%s" valign="%s"')                                      ' halign="%s" valign="%s"')
324                                  % (label.x, label.y, label.text, label.halign,                                  % (label.x, label.y,
325                                       self.encode(label.text),
326                                       label.halign,
327                                     label.valign))                                     label.valign))
328              self.close_element('labellayer')              self.close_element('labellayer')
329    

Legend:
Removed from v.710  
changed lines
  Added in v.892

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26