Patch #478654: Expose tk_chooseDirectory.
Also delegate kw arguments through ** calls.
diff --git a/Lib/lib-tk/tkFileDialog.py b/Lib/lib-tk/tkFileDialog.py
index e07e5d0..eb2a900 100644
--- a/Lib/lib-tk/tkFileDialog.py
+++ b/Lib/lib-tk/tkFileDialog.py
@@ -64,6 +64,10 @@
 
     command = "tk_getSaveFile"
 
+class Directory(_Dialog):
+    "Ask for a directory"
+
+    command = "tk_chooseDirectory"
 
 #
 # convenience stuff
@@ -71,19 +75,19 @@
 def askopenfilename(**options):
     "Ask for a filename to open"
 
-    return apply(Open, (), options).show()
+    return Open(**options).show()
 
 def asksaveasfilename(**options):
     "Ask for a filename to save as"
 
-    return apply(SaveAs, (), options).show()
+    return SaveAs(**options).show()
 
 # FIXME: are the following two perhaps a bit too convenient?
 
 def askopenfile(mode = "r", **options):
     "Ask for a filename to open, and returned the opened file"
 
-    filename = apply(Open, (), options).show()
+    filename = Open(**options).show()
     if filename:
         return open(filename, mode)
     return None
@@ -91,11 +95,14 @@
 def asksaveasfile(mode = "w", **options):
     "Ask for a filename to save as, and returned the opened file"
 
-    filename = apply(SaveAs, (), options).show()
+    filename = SaveAs(**options).show()
     if filename:
         return open(filename, mode)
     return None
 
+def askdirectory (**options):
+    "Ask for a directory, and return the file name"
+    return Directory(**options).show()
 
 # --------------------------------------------------------------------
 # test stuff