/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/Lib/fileutil.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/Lib/fileutil.py

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

revision 339 by bh, Fri Sep 20 17:27:36 2002 UTC revision 1188 by jonathan, Thu Jun 12 17:00:43 2003 UTC
# Line 11  Functions to deal with filenames Line 11  Functions to deal with filenames
11    
12  __version__ = "$Revision$"  __version__ = "$Revision$"
13    
14    import os
15  import os.path  import os.path
16    from tempfile import mktemp
17    
18  from string import split, join  from string import split, join
19    
20    from Thuban import _
21    
22  def relative_filename_common(dir, absname, sep):  def relative_filename_common(dir, absname, sep):
23      """Return a filename relative to dir for the absolute file name absname.      """Return a filename relative to dir for the absolute file name absname.
# Line 80  def relative_filename_posix(dir, absname Line 84  def relative_filename_posix(dir, absname
84          return absname          return absname
85    
86      if not posixpath.isabs(dir):      if not posixpath.isabs(dir):
87          raise TypeError("first argument must be an absolute filename")          raise TypeError(_("first argument must be an absolute filename"))
88    
89      dir = posixpath.normpath(dir)      dir = posixpath.normpath(dir)
90      absname = posixpath.normpath(absname)      absname = posixpath.normpath(absname)
# Line 131  def relative_filename_nt(dir, absname): Line 135  def relative_filename_nt(dir, absname):
135      #print dir_drive, dir_rest      #print dir_drive, dir_rest
136      #print absname_drive, absname_rest      #print absname_drive, absname_rest
137      if not dir_drive or not absname_drive:      if not dir_drive or not absname_drive:
138          raise TypeError("Both parameters must have a drive letter")          raise TypeError(_("Both parameters must have a drive letter"))
139    
140      if not ntpath.isabs(dir_rest):      if not ntpath.isabs(dir_rest):
141          raise TypeError("first argument must be an absolute filename")          raise TypeError(_("first argument must be an absolute filename"))
142    
143      # handle some special cases      # handle some special cases
144      if not ntpath.isabs(absname_rest):      if not ntpath.isabs(absname_rest):
# Line 148  def relative_filename_nt(dir, absname): Line 152  def relative_filename_nt(dir, absname):
152      # relative name      # relative name
153      return relative_filename_common(dir_rest, absname_rest, "\\")      return relative_filename_common(dir_rest, absname_rest, "\\")
154    
155    def get_application_dir():
156        """Determine the path to the .thuban directory. Create the directory
157        if it doesn't exist.
158    
159        Under posix systems use the os.expanduser() method.
160        Under Win32 try to read the "Explorer/Shell Folders/" value "AppData".
161        """
162    
163        if os.name == 'posix':
164            dir = os.path.expanduser("~/.thuban")
165            if not os.path.isdir(dir):
166               os.mkdir(dir)
167            return dir
168        elif os.name == 'nt':
169            regkey = 1
170            try:
171                import _winreg as wreg
172            except ImportError:
173                regkey = 0
174    
175            if regkey:
176                try:
177                    key = wreg.OpenKey(wreg.HKEY_CURRENT_USER,
178                      "Software\\Microsoft\\Windows\\CurrentVersion\\"\
179                      "Explorer\\Shell Folders")
180                    dir = wreg.QueryValueEx(key, "AppData")[0]
181                    dir = os.path.join(dir, "thuban")
182                except:
183                    regkey = 0
184    
185            if not regkey:
186                # The fallback. This should result in something like the
187                # user directory ...
188                guess = os.path.dirname(
189                                    os.path.dirname(os.path.dirname(mktemp()))
190                                )
191                dir = os.path.join(guess, "thuban")
192            if not os.path.isdir(dir):
193               os.mkdir(dir)
194    
195            return dir
196    
197        else:
198            raise RuntimeError(_("No implementation of get_application_dir"
199                           " available for platform") + os.name)
200    
201  # bind the appropriate version of relative_filename for the platform  # bind the appropriate version of relative_filename for the platform
202  # we're currently running on.  # we're currently running on.
# Line 156  if os.name == "posix": Line 205  if os.name == "posix":
205  elif os.name == "nt":  elif os.name == "nt":
206      relative_filename = relative_filename_nt      relative_filename = relative_filename_nt
207  else:  else:
208      raise RuntimeError("No implementation of relative_filename"      raise RuntimeError(_("No implementation of relative_filename"
209                         " available for platform" + os.name)                         " available for platform") + os.name)
210    
211  __test__ = {"relative_filename_posix": relative_filename_posix,  __test__ = {"relative_filename_posix": relative_filename_posix,
212              "relative_filename_nt": relative_filename_nt}              "relative_filename_nt": relative_filename_nt}

Legend:
Removed from v.339  
changed lines
  Added in v.1188

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26