import os, sys try: from gdcmVersion import * except: print "gdcmVersion not imported" 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 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 # the standard dictionary i.e. the file dicomV3.dic. try: ### First consider the environnement variable. os.environ["GDCM_DICT_PATH"] if not os.path.isfile(os.path.join(os.environ["GDCM_DICT_PATH"], "dicomV3.dic")): raise KeyError except KeyError: Path = BuildInstallOrPreinstallPath("Dicts", "dicomV3.dic") if not Path: print "Path to dictionaries is mandatory. Exiting" sys.exit(1) os.environ["GDCM_DICT_PATH"] = Path GDCM_DICT_PATH = os.environ["GDCM_DICT_PATH"] ### Set up the path to the data images for the demos. if os.environ["GDCM_DATA_PATH"]: GDCM_DATA_PATH = BuildInstallOrPreinstallPath(os.environ["GDCM_DATA_PATH"], "test.acr") else: 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: import gdcm except ImportError,e: print e raise ImportError, "gdcm extension not imported." ### Expose only the necessary stuff gdcmGlobal = gdcm.gdcmGlobal gdcmDictSet = gdcm.gdcmDictSet gdcmDicomDir = gdcm.gdcmDicomDir gdcmHeader = gdcm.gdcmHeader gdcmHeaderHelper = gdcm.gdcmHeaderHelper gdcmFile = gdcm.gdcmFile gdcmDicomDirMeta = gdcm.gdcmDicomDirMeta gdcmDicomDirPatient = gdcm.gdcmDicomDirPatient gdcmDicomDirStudy = gdcm.gdcmDicomDirStudy gdcmDicomDirSerie = gdcm.gdcmDicomDirSerie gdcmDicomDirImage = gdcm.gdcmDicomDirImage def GetPubDictEntryNames(): return gdcmGlobal.GetDicts().GetPubDictEntryNames() def GetPubDictEntryNamesByCategory(): return gdcmGlobal.GetDicts().GetPubDictEntryNamesByCategory()