/[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 740 by jonathan, Fri Apr 25 09:14:04 2003 UTC revision 894 by frank, Mon May 12 10:46:29 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            else:
155                return None
156    
157  class SessionSaver(XMLWriter):  class SessionSaver(XMLWriter):
158    
159      """Class to serialize a session into an XML file.      """Class to serialize a session into an XML file.
# Line 199  class SessionSaver(XMLWriter): Line 212  class SessionSaver(XMLWriter):
212          element, call write_layer for each layer contained in the map          element, call write_layer for each layer contained in the map
213          and finally call write_label_layer to write the label layer.          and finally call write_label_layer to write the label layer.
214          """          """
215          self.open_element('map title="%s"' % escape(map.title))          self.open_element('map title="%s"' % self.encode(map.title))
216          self.write_projection(map.projection)          self.write_projection(map.projection)
217          for layer in map.Layers():          for layer in map.Layers():
218              self.write_layer(layer)              self.write_layer(layer)
# Line 210  class SessionSaver(XMLWriter): Line 223  class SessionSaver(XMLWriter):
223          """Write the projection.          """Write the projection.
224          """          """
225          if projection and len(projection.params) > 0:          if projection and len(projection.params) > 0:
226              self.open_element("projection")              self.open_element("projection", {"name": projection.GetName()})
227              for param in projection.params:              for param in projection.params:
228                  self.write_element('parameter value="%s"' % escape(param))                  self.write_element('parameter value="%s"' %
229                                       self.encode(param))
230              self.close_element("projection")              self.close_element("projection")
231    
232      def write_layer(self, layer, attrs = None):      def write_layer(self, layer, attrs = None):
# Line 232  class SessionSaver(XMLWriter): Line 246  class SessionSaver(XMLWriter):
246          attrs["stroke"]       = lc.GetDefaultLineColor().hex()          attrs["stroke"]       = lc.GetDefaultLineColor().hex()
247          attrs["stroke_width"] = str(lc.GetDefaultLineWidth())          attrs["stroke_width"] = str(lc.GetDefaultLineWidth())
248          attrs["fill"]         = lc.GetDefaultFill().hex()          attrs["fill"]         = lc.GetDefaultFill().hex()
249            attrs["visible"]      = ("false", "true")[int(layer.Visible())]
250    
251          self.open_element("layer", attrs)          self.open_element("layer", attrs)
252    
# Line 262  class SessionSaver(XMLWriter): Line 277  class SessionSaver(XMLWriter):
277          self.open_element("classification", attrs)          self.open_element("classification", attrs)
278    
279    
280          types = [[lambda p: 'clnull label="%s"' % p.GetLabel(),          types = [[lambda p: 'clnull label="%s"' % self.encode(p.GetLabel()),
281                    lambda p: 'clnull'],                    lambda p: 'clnull'],
282                   [lambda p: 'clpoint label="%s" value="%s"' %                   [lambda p: 'clpoint label="%s" value="%s"' %
283                               (p.GetLabel(), str(p.GetValue())),                               (self.encode(p.GetLabel()), str(p.GetValue())),
284                    lambda p: 'clpoint'],                    lambda p: 'clpoint'],
285                   [lambda p: 'clrange label="%s" min="%s" max="%s"' %                   [lambda p: 'clrange label="%s" range="%s"' %
286                               (p.GetLabel(),                               (self.encode(p.GetLabel()),
287                                str(p.GetMin()), (str(p.GetMax()))),                                str(p.GetRange())),
288                    lambda p: 'clrange']]                    lambda p: 'clrange']]
289    
290          def write_class_group(group):          def write_class_group(group):
# Line 305  class SessionSaver(XMLWriter): Line 320  class SessionSaver(XMLWriter):
320              for label in labels:              for label in labels:
321                  self.write_element(('label x="%g" y="%g" text="%s"'                  self.write_element(('label x="%g" y="%g" text="%s"'
322                                      ' halign="%s" valign="%s"')                                      ' halign="%s" valign="%s"')
323                                  % (label.x, label.y, label.text, label.halign,                                  % (label.x, label.y,
324                                       self.encode(label.text),
325                                       label.halign,
326                                     label.valign))                                     label.valign))
327              self.close_element('labellayer')              self.close_element('labellayer')
328    

Legend:
Removed from v.740  
changed lines
  Added in v.894

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26