...
[iramuteq] / chemins.py
index 2374874..b880935 100644 (file)
@@ -5,12 +5,22 @@
 #License: GNU/GPL
 
 import os
+import sys
 import tempfile
 import logging
 
 log = logging.getLogger('iramuteq.chemins')
 
 
+def normpath_win32(path) :
+    if not sys.platform == 'win32' :
+        return path
+    while '\\\\' in path :
+        path = path.replace('\\\\', '\\')
+    if sys.platform == 'win32' and path.startswith('\\') and not path.startswith('\\\\') :
+        path = '\\' + path
+    return path
+
 class PathOut :
     def __init__(self, filename = None, analyse_type = '', dirout = None) :
         if filename is not None :
@@ -20,11 +30,11 @@ class PathOut :
             self.filename, self.fileext = os.path.splitext(self.filebasename)
         self.analyse = analyse_type
         #self.dirout = self.mkdirout(dirout)
-        if dirout is not None: 
-            self.dirout = dirout
+        if dirout is not None:
+            self.dirout = os.path.abspath(dirout)
         elif filename is not None and dirout is None:
-            self.dirout = self.directory
-        self.d = {} 
+            self.dirout = os.path.abspath(self.directory)
+        self.d = {}
 
     def mkdirout(self) :
         dirout = os.path.join(self.dirout, self.filename + '_' + self.analyse + '_')
@@ -36,6 +46,14 @@ class PathOut :
         self.name = os.path.splitext(tdirout)[1]
         return tdirout
 
+    def makenew(self, filename, ext):
+        nb = 1
+        newfile = '_'.join([os.path.join(self.dirout, filename), '%i' % nb]) + '.' + ext
+        while os.path.exists(newfile) :
+            nb += 1
+            newfile = '_'.join([os.path.join(self.dirout, filename), '%i' % nb]) + '.' + ext
+        return newfile
+
     def createdir(self, tdirout) :
         if not os.path.exists(tdirout) :
             os.mkdir(tdirout)
@@ -48,9 +66,13 @@ class PathOut :
             self.temp = tempfile.mkstemp(prefix='iramuteq')[1].replace('\\', '\\\\')
             return self.temp
         elif key not in self.d :
-            return os.path.join(self.dirout, key).replace('\\', '\\\\')
+            f = os.path.join(self.dirout, key).replace('\\', '\\\\')
+            return normpath_win32(f)
+            #return os.path.join(self.dirout, key).replace('\\', '\\\\')
         else :
-            return os.path.join(self.dirout, self.d[key]).replace('\\', '\\\\')
+            f = os.path.join(self.dirout, self.d[key]).replace('\\', '\\\\')
+            return normpath_win32(f)
+            #return os.path.join(self.dirout, self.d[key]).replace('\\', '\\\\')
     
     def getF(self, key) :
         return self.__getitem__(key).replace('\\', '/')
@@ -145,6 +167,7 @@ def ConstructGlobalPath(AppliPath):
     ConfigPath = os.path.join(AppliPath, 'configuration')
     DictConfigPath = {
             'global': os.path.join(ConfigPath, 'global.cfg'),
+            'preferences': os.path.join(ConfigPath, 'iramuteq.cfg'),
             }
     return DictConfigPath