]> Creatis software - gdcm.git/blobdiff - gdcmPython/__init__.py
Benoit Regrain : Modify the rules for checking the paths
[gdcm.git] / gdcmPython / __init__.py
index d15ab74da3930478c057586a2848131171b6798d..dcad484cb23efa8365c080bd12deb841451ba881 100644 (file)
@@ -1,7 +1,36 @@
 import os, sys
 
+def BuildInstallOrPreinstallPath(DirName, FileName = None):
+   # Builds a path to the DirName directory. This should work both when:
+   # - the package is properly installed in which case DirName is a subdir
+   #   of the package,
+   # - when in pre-installation mode (basically inside a CVS hierarchy)
+   #   in which case DirName and the package itself lie at the same
+   #   filesystem level.
+   # In both cases we need to express the full path to DirName relatively
+   # to the path to this __init__.py. For this we rely on __path__ variable.
+   # In order to make sure we got the correct Path, we check for the
+   # existence of FileName if it is setted otherwise for the existence of the
+   # DirName.
+   InstallModePath = os.path.join(__path__[0], DirName + "/")
+   if(FileName):
+      if os.path.isfile(os.path.join(InstallModePath, FileName)):
+         return InstallModePath
+   else:
+      if os.path.isdir(InstallModePath):
+         return InstallModePath
+
+   PreInstallModePath = os.path.join(__path__[0], "..", DirName + "/")
+   if(FileName):
+      if os.path.isfile(os.path.join(PreInstallModePath, FileName)):
+         return PreInstallModePath
+   else:
+      if os.path.isdir(PreInstallModePath):
+         return PreInstallModePath
+   return None
+
 ### Setup the path to the dictionaries. WARNING: this needs to be done
-#   BEFORE importation of the shadow classse generated by swig as found
+#   BEFORE importation of the shadow classes generated by swig as found
 #   in gdcm, since the dynamic library loads the standard dictionary
 #   when dynamically loaded.
 #   We consider we succefully found the dictionaries path when we encounter
@@ -14,43 +43,19 @@ try:
                                       "dicomV3.dic")):
       raise KeyError
 except KeyError:
-   # When environnement variable is unavailable assume the package was
-   # properly installed i.e. the layout is such that the directory containing
-   # the dictionaries is BELOW (the root is at the top) the current file.
-   # Note: when importing this __init__ file the pathes are relative to the
-   #       invocation directory. In order to get them relative to the package
-   #       (or more simply to this file) we rely on the __path__ variable.
-   InstallModePath = os.path.join(__path__[0], "Dicts/")
-   if os.path.isfile(os.path.join(InstallModePath, "dicomV3.dic")):
-      os.environ["GDCM_DICT_PATH"] = InstallModePath
-      PreInstallModePath = None
-   else:
-      # When both environnement variable and proper package installation 
-      # strategy fail we eventually consider the pre-installation mode
-      # i.e. when developpers are toying in a CVS tree. In this case
-      # the layout is such that the directory containing the dictionaries is
-      # ABOVE (the root is at the top) the current directory.
-      PreInstallModePath = os.path.join(__path__[0], "..", "Dicts/")
-      if os.path.isfile(os.path.join(PreInstallModePath, "dicomV3.dic")):
-         os.environ["GDCM_DICT_PATH"] = PreInstallModePath
-         InstallModePath = None
-      else:
-         print "Unfound gdcm dictionaries path"
-         sys.exit(1)
-
-### Set up the path to the data images (for the test suite and the demo
-#   examples). As for GDCM_DICT_PATH we offer both proper python package
-#   installation scheme and the pre-install mode (see above).
-InstallModePath = os.path.join(__path__[0], "Data")
-if os.path.isfile(os.path.join(InstallModePath, "test.acr")):
-   GDCM_DATA_PATH = InstallModePath
-else:
-   PreInstallModePath = os.path.join(__path__[0], "..", "Data")
-   if os.path.isfile(os.path.join(PreInstallModePath, "test.acr")):
-      GDCM_DATA_PATH = PreInstallModePath
-   else:
-      print "Unfound data path"
+   Path = BuildInstallOrPreinstallPath("Dicts", "dicomV3.dic")
+   if not Path:
+      print "Path to dictionaries is mandatory. Exiting"
       sys.exit(1)
+   os.environ["GDCM_DICT_PATH"] = Path
+
+### Set up the path to the data images for the demos.
+GDCM_DATA_PATH = BuildInstallOrPreinstallPath("Test", "test.acr")
+if not GDCM_DATA_PATH:
+   print "GDCM_DATA_PATH is not setup properly: unfound Test directory"
+
+### Set up the path to the data images of the test suite.
+GDCM_TEST_DATA_PATH = BuildInstallOrPreinstallPath("gdcmData")
 
 ### Import the swig generated shadow classes.
 try:
@@ -63,3 +68,9 @@ except ImportError,e:
 gdcmHeader = gdcm.gdcmHeader
 gdcmDictSet = gdcm.gdcmDictSet
 gdcmFile = gdcm.gdcmFile
+
+def GetPubDictTagNames():
+   return gdcm.cvar.gdcmGlob.GetDicts().GetPubDictTagNames()
+
+def GetPubDictTagNamesByCategory():
+   return gdcm.cvar.gdcmGlob.GetDicts().GetPubDictTagNamesByCategory()