--- /dev/null
+from gdcmPython import *
+import sys
+
+### Get filename from command line or default it
+try:
+   FileName = sys.argv[1]
+except IndexError:
+   FileName = os.path.join(GDCM_DATA_PATH, "DICOMDIR")
+
+try:
+   printLevel = int(sys.argv[2])
+except IndexError:
+   printLevel = 1
+print FileName
+
+### Build the header element list
+toRead = gdcmDicomDir(FileName)
+
+def startMethod():
+       print "Python start"
+
+def endMethod():
+       print "Python end"
+
+def progressMethod():
+       print "Python progress",toRead.GetProgress()
+
+toRead.SetStartMethod(None)
+toRead.SetProgressMethod(progressMethod)
+toRead.SetEndMethod(endMethod)
+toRead.ParseDirectory()
+
+print "##############################################################"
+print "### Display all the elements and their respective values"
+print "## found in the ", FileName, " file."
+print "##############################################################"
+toRead.SetPrintLevel(-1)
+toRead.Print()
+
+ValDict = toRead.GetEntry()
+for key in ValDict.keys():
+       print "[%s] = [%s]" %(key, ValDict[key])
+
 
 ////////////////////////////////////////////////////////////////////////////
 // Deals with function returning a C++ string.
 %typemap(python, in) (gdcmMethod *,void * =NULL,gdcmMethod * =NULL) {
-    Py_INCREF($input);
-    $1=vtkPythonVoidFunc;
-       $2=$input;
-       $3=vtkPythonVoidFuncArgDelete;
+       if($input!=Py_None)
+       {
+               Py_INCREF($input);
+               $1=vtkPythonVoidFunc;
+               $2=$input;
+               $3=vtkPythonVoidFuncArgDelete;
+       }
+       else
+       {
+               $1=NULL;
+               $2=NULL;
+               $3=NULL;
+       }
 }