Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Francis <santiago.danielfrancis@gmail.com>2011-12-04 19:38:59 (GMT)
committer Daniel Francis <santiago.danielfrancis@gmail.com>2011-12-04 19:38:59 (GMT)
commite87fc8ce21777108f0ee1d102220535345124234 (patch)
tree71d4e641a86764dbd7a9b7dd940f32b5a5933680
parent89eeff407930913b518b308a16f5f230bb27d183 (diff)
New File Choosers
-rw-r--r--file_choosers.py86
1 files changed, 86 insertions, 0 deletions
diff --git a/file_choosers.py b/file_choosers.py
new file mode 100644
index 0000000..a005e2b
--- /dev/null
+++ b/file_choosers.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+import gtk
+
+def open_file_dialog():
+ dialog = gtk.FileChooserDialog(_("Open..."),
+ None,
+ gtk.FILE_CHOOSER_ACTION_OPEN,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+ gtk.STOCK_OPEN, gtk.RESPONSE_OK))
+ dialog.set_default_response(gtk.RESPONSE_OK)
+
+ filter = gtk.FileFilter()
+ filter.set_name(_("All files"))
+ filter.add_pattern("*")
+ dialog.add_filter(filter)
+
+ filter = gtk.FileFilter()
+ filter.set_name(_("All text files"))
+ filter.add_mime_type("text/*")
+ dialog.add_filter(filter)
+
+ lang_ids = langs
+ for i in lang_ids:
+ lang = langsmanager.get_language(i)
+ filter = gtk.FileFilter()
+ filter.set_name(lang.get_name())
+ for m in lang.get_mime_types():
+ filter.add_mime_type(m)
+ dialog.add_filter(filter)
+ response = dialog.run()
+ if response == gtk.RESPONSE_OK:
+ to_return = dialog.get_filename()
+ elif response == gtk.RESPONSE_CANCEL:
+ to_return = None
+ dialog.destroy()
+ return to_return
+
+def confirm_overwrite(widget):
+ dialog = gtk.MessageDialog(type=gtk.MESSAGE_QUESTION)
+ dialog.add_buttons(gtk.STOCK_NO, gtk.RESPONSE_CANCEL, gtk.STOCK_YES, gtk.RESPONSE_ACCEPT)
+ dialog.set_markup("<b>%s</b>" % _("This file name already exists"))
+ dialog.format_secondary_text(_("Overwrite the file?"))
+ response = dialog.run()
+ dialog.destroy()
+ if response == gtk.RESPONSE_ACCEPT:
+ return gtk.FILE_CHOOSER_CONFIRMATION_ACCEPT_FILENAME
+ else:
+ return gtk.FILE_CHOOSER_CONFIRMATION_SELECT_AGAIN
+
+def save_file_dialog():
+ dialog = gtk.FileChooserDialog(_("Save..."),
+ None,
+ gtk.FILE_CHOOSER_ACTION_SAVE,
+ (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL,
+ gtk.STOCK_SAVE, gtk.RESPONSE_OK))
+ dialog.set_default_response(gtk.RESPONSE_OK)
+ dialog.set_do_overwrite_confirmation(True)
+ dialog.connect("confirm-overwrite", confirm_overwrite)
+
+ filter = gtk.FileFilter()
+ filter.set_name(_("All files"))
+ filter.add_pattern("*")
+ dialog.add_filter(filter)
+
+ filter = gtk.FileFilter()
+ filter.set_name(_("All text files"))
+ filter.add_mime_type("text/*")
+ dialog.add_filter(filter)
+
+ lang_ids = langs
+ for i in lang_ids:
+ lang = langsmanager.get_language(i)
+ filter = gtk.FileFilter()
+ filter.set_name(lang.get_name())
+ for m in lang.get_mime_types():
+ filter.add_mime_type(m)
+ dialog.add_filter(filter)
+ response = dialog.run()
+ if response == gtk.RESPONSE_OK:
+ to_return = dialog.get_filename()
+ elif response == gtk.RESPONSE_CANCEL:
+ to_return = None
+ dialog.destroy()
+ return to_return