/[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 1843 by bh, Tue Oct 21 10:49:38 2003 UTC revision 2004 by bh, Tue Dec 2 13:25:55 2003 UTC
# Line 41  def relative_filename(dir, filename): Line 41  def relative_filename(dir, filename):
41          return filename          return filename
42    
43    
44    def unify_filename(filename):
45        """Return a 'unified' version of filename
46    
47        The .thuban files should be as platform independent as possible.
48        Since they must contain filenames the filenames have to unified. We
49        unify on unix-like filenames for now, which means we do nothing on a
50        posix system and simply replace backslashes with slashes on windows
51        """
52        if os.name == "posix":
53            return filename
54        elif os.name == "nt":
55            return "/".join(filename.split("\\"))
56        else:
57            raise RuntimeError("Unsupported platform for unify_filename: %s"
58                               % os.name)
59    
60  def sort_data_stores(stores):  def sort_data_stores(stores):
61      """Return a topologically sorted version of the sequence of data containers      """Return a topologically sorted version of the sequence of data containers
62    
# Line 103  class SessionSaver(XMLWriter): Line 119  class SessionSaver(XMLWriter):
119      def has_id(self, obj):      def has_id(self, obj):
120          return self.idmap.has_key(id(obj))          return self.idmap.has_key(id(obj))
121    
122        def prepare_filename(self, filename):
123            """Return the string to use when writing filename to the thuban file
124    
125            The returned string is a unified version (only slashes as
126            directory separators, see unify_filename) of filename expressed
127            relative to the directory the .thuban file is written to.
128            """
129            return unify_filename(relative_filename(self.dir, filename))
130    
131      def write(self, file_or_filename):      def write(self, file_or_filename):
132          XMLWriter.write(self, file_or_filename)          XMLWriter.write(self, file_or_filename)
133    
# Line 133  class SessionSaver(XMLWriter): Line 158  class SessionSaver(XMLWriter):
158              attrs["xmlns:" + name] = uri              attrs["xmlns:" + name] = uri
159          # default name space          # default name space
160          attrs["xmlns"] = \          attrs["xmlns"] = \
161                 "http://thuban.intevation.org/dtds/thuban-1.0-dev.dtd"                 "http://thuban.intevation.org/dtds/thuban-1.0rc1.dtd"
162          self.open_element("session", attrs)          self.open_element("session", attrs)
163          self.write_db_connections(session)          self.write_db_connections(session)
164          self.write_data_containers(session)          self.write_data_containers(session)
# Line 171  class SessionSaver(XMLWriter): Line 196  class SessionSaver(XMLWriter):
196              idvalue = self.define_id(container)              idvalue = self.define_id(container)
197              if isinstance(container, ShapefileStore):              if isinstance(container, ShapefileStore):
198                  self.define_id(container.Table(), idvalue)                  self.define_id(container.Table(), idvalue)
199                  filename = relative_filename(self.dir, container.FileName())                  filename = self.prepare_filename(container.FileName())
200                  self.write_element("fileshapesource",                  self.write_element("fileshapesource",
201                                     {"id": idvalue, "filename": filename,                                     {"id": idvalue, "filename": filename,
202                                      "filetype": "shapefile"})                                      "filetype": "shapefile"})
# Line 188  class SessionSaver(XMLWriter): Line 213  class SessionSaver(XMLWriter):
213                                      "dbconn": self.get_id(conn),                                      "dbconn": self.get_id(conn),
214                                      "tablename": container.TableName()})                                      "tablename": container.TableName()})
215              elif isinstance(container, DBFTable):              elif isinstance(container, DBFTable):
216                  filename = relative_filename(self.dir, container.FileName())                  filename = self.prepare_filename(container.FileName())
217                  self.write_element("filetable",                  self.write_element("filetable",
218                                     {"id": idvalue,                                     {"id": idvalue,
219                                      "title": container.Title(),                                      "title": container.Title(),
# Line 266  class SessionSaver(XMLWriter): Line 291  class SessionSaver(XMLWriter):
291              self.write_classification(layer)              self.write_classification(layer)
292              self.close_element("layer")              self.close_element("layer")
293          elif isinstance(layer, RasterLayer):          elif isinstance(layer, RasterLayer):
294              attrs["filename"] = relative_filename(self.dir, layer.filename)              attrs["filename"] = self.prepare_filename(layer.filename)
295              self.open_element("rasterlayer", attrs)              self.open_element("rasterlayer", attrs)
296              self.write_projection(layer.GetProjection())              self.write_projection(layer.GetProjection())
297              self.close_element("rasterlayer")              self.close_element("rasterlayer")

Legend:
Removed from v.1843  
changed lines
  Added in v.2004

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26