Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/monodevelop.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Alberto Cortez <calberto.cortez@gmail.com>2011-08-15 03:44:22 +0400
committerCarlos Alberto Cortez <calberto.cortez@gmail.com>2011-08-15 10:05:18 +0400
commit40c20ea636b87a75a572f3f99cd0416a1e6058b3 (patch)
tree3a9b49644350e529fc86a4d92c9e790366c010e3 /main/src/addins/WindowsPlatform
parentf8eb59a56d42cf04f88f00f77f00dc1bc1c6eb3c (diff)
[Windows] Detect the right filter when saving a file.
FileDialog doesn't show the file extension when saving a file, so we try to detect the right one so the user knows.
Diffstat (limited to 'main/src/addins/WindowsPlatform')
-rw-r--r--main/src/addins/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs24
1 files changed, 23 insertions, 1 deletions
diff --git a/main/src/addins/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs b/main/src/addins/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs
index a3658a530d..7e8875f876 100644
--- a/main/src/addins/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs
+++ b/main/src/addins/WindowsPlatform/Dialogs/SelectFileDialogHandler.cs
@@ -59,7 +59,7 @@ namespace MonoDevelop.Platform
dialog.AddExtension = true;
dialog.Filter = GetFilterFromData (data.Filters);
- dialog.FilterIndex = data.DefaultFilter == null ? 1 : data.Filters.IndexOf (data.DefaultFilter) + 1;
+ dialog.FilterIndex = data.DefaultFilter == null ? 1 : GetDefaultFilterIndex (data);
dialog.InitialDirectory = data.CurrentFolder;
@@ -71,6 +71,28 @@ namespace MonoDevelop.Platform
if (openDialog != null)
openDialog.Multiselect = data.SelectMultiple;
}
+
+ static int GetDefaultFilterIndex (SelectFileDialogData data)
+ {
+ var defFilter = data.DefaultFilter;
+ int idx = data.Filters.IndexOf (defFilter) + 1;
+
+ // FileDialog doesn't show the file extension when saving a file,
+ // so we try to look fo the precise filter if none was specified.
+ if (data.Action == Gtk.FileChooserAction.Save && defFilter.Patterns.Contains ("*")) {
+ string ext = Path.GetExtension (data.InitialFileName);
+
+ if (!String.IsNullOrEmpty (ext))
+ for (int i = 0; i < data.Filters.Count; i++) {
+ var filter = data.Filters [i];
+ foreach (string pattern in filter.Patterns)
+ if (pattern.EndsWith (ext))
+ return i + 1;
+ }
+ }
+
+ return idx;
+ }
static void SetFolderBrowserProperties (SelectFileDialogData data, FolderBrowserDialog dialog)
{