[tor-commits] [arm/master] Use separate file choosers for dir selection and file selection.

atagar at torproject.org atagar at torproject.org
Thu Aug 11 15:27:57 UTC 2011


commit f6178103cceb94e65c911f17e014e5691228e95c
Author: Kamran Riaz Khan <krkhan at inspirated.com>
Date:   Sat Jul 30 14:57:50 2011 +0500

    Use separate file choosers for dir selection and file selection.
---
 src/gui/configPanel.py |    9 ++++++++-
 src/util/gtkTools.py   |   28 +++++++++++++++++++++++++---
 2 files changed, 33 insertions(+), 4 deletions(-)

diff --git a/src/gui/configPanel.py b/src/gui/configPanel.py
index a6f5c07..8c3a5e0 100644
--- a/src/gui/configPanel.py
+++ b/src/gui/configPanel.py
@@ -33,6 +33,10 @@ def input_conf_value_boolean(option):
   prompt = "Select value for %s" % option
   return "1" if gtkTools.input_boolean(prompt) else "0"
 
+def input_conf_value_dir(option):
+  prompt = "Select value for %s" % option
+  return gtkTools.input_dir(prompt)
+
 def input_conf_value_filename(option):
   prompt = "Select value for %s" % option
   return gtkTools.input_filename(prompt)
@@ -106,7 +110,10 @@ class ConfigPanel(object, CliConfigPanel):
     elif configType == 'Boolean':
       newValue = input_conf_value_boolean(configOption)
     elif configType == 'Filename':
-      newValue = input_conf_value_filename(configOption)
+      if 'Directory' in configOption:
+        newValue = input_conf_value_dir(configOption)
+      else:
+        newValue = input_conf_value_filename(configOption)
     else:
       newValue = input_conf_value_text(configOption)
 
diff --git a/src/util/gtkTools.py b/src/util/gtkTools.py
index 1d3468f..87b3981 100644
--- a/src/util/gtkTools.py
+++ b/src/util/gtkTools.py
@@ -288,17 +288,39 @@ def input_boolean(prompt):
 
   return choice if response == gtk.RESPONSE_OK else None
 
+def input_dir(prompt):
+  dialog = gtk.FileChooserDialog(prompt,
+                               None,
+                               gtk.FILE_CHOOSER_ACTION_SELECT_FOLDER,
+                               (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+                                gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+  dialog.set_default_response(gtk.RESPONSE_OK)
+
+  dialog.show_all()
+  response = dialog.run()
+
+  filename = dialog.get_filename()
+
+  dialog.destroy()
+
+  return filename if response == gtk.RESPONSE_OK else None
+
 def input_filename(prompt):
-  dialog = gtk.FileSelection(prompt)
+  dialog = gtk.FileChooserDialog(prompt,
+                               None,
+                               gtk.FILE_CHOOSER_ACTION_SAVE,
+                               (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+                                gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+  dialog.set_default_response(gtk.RESPONSE_OK)
 
   dialog.show_all()
   response = dialog.run()
 
-  choice = dialog.get_filename()
+  filename = dialog.get_filename()
 
   dialog.destroy()
 
-  return choice if response == gtk.RESPONSE_OK else None
+  return filename if response == gtk.RESPONSE_OK else None
 
 def showError(msg):
   dialog = gtk.MessageDialog(None,





More information about the tor-commits mailing list