diff options
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs')
-rw-r--r-- | main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs index fd70f5f9b0..511320179f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Gui.OptionPanels/MonoRuntimePanel.cs @@ -122,13 +122,13 @@ namespace MonoDevelop.Ide.Gui.OptionPanels return Environment.GetFolderPath (IntPtr.Size == 8? Environment.SpecialFolder.ProgramFilesX86 : Environment.SpecialFolder.ProgramFiles); } - + protected virtual void OnButtonAddClicked (object sender, System.EventArgs e) { var dlg = new SelectFolderDialog (GettextCatalog.GetString ("Select the mono installation prefix")) { TransientFor = this.Toplevel as Gtk.Window, }; - + //set a platform-dependent default folder for the dialog if possible if (Platform.IsWindows) { // ProgramFilesX86 is broken on 32-bit WinXP @@ -139,17 +139,32 @@ namespace MonoDevelop.Ide.Gui.OptionPanels if (System.IO.Directory.Exists ("/usr")) dlg.CurrentFolder = "/usr"; } - + if (!dlg.Run ()) return; - - var rinfo = new MonoRuntimeInfo (dlg.SelectedFile); - if (!rinfo.IsValidRuntime) { - MessageService.ShowError (GettextCatalog.GetString ("Mono runtime not found"), GettextCatalog.GetString ("Please provide a valid directory prefix where mono is installed (for example, /usr)")); - return; + + var rinfo64 = new MonoRuntimeInfo (dlg.SelectedFile, true); + var rinfo32 = new MonoRuntimeInfo (dlg.SelectedFile, false); + if (rinfo64.IsValidRuntime && rinfo32.IsValidRuntime) { + newInfos.Add (rinfo64); + store.AppendValues (rinfo64.DisplayName, rinfo64); + newInfos.Add (rinfo32); + store.AppendValues (rinfo32.DisplayName, rinfo32); + } else if (rinfo64.IsValidRuntime) { + newInfos.Add (rinfo64); + store.AppendValues (rinfo64.DisplayName, rinfo64); + } else if (rinfo32.IsValidRuntime) { + newInfos.Add (rinfo32); + store.AppendValues (rinfo32.DisplayName, rinfo32); + } else { + var rinfo = new MonoRuntimeInfo (dlg.SelectedFile, null); + if (rinfo.IsValidRuntime) { + newInfos.Add (rinfo); + store.AppendValues (rinfo.DisplayName, rinfo); + } else { + MessageService.ShowError (GettextCatalog.GetString ("Mono runtime not found"), GettextCatalog.GetString ("Please provide a valid directory prefix where mono is installed (for example, /usr)")); + } } - newInfos.Add (rinfo); - store.AppendValues (rinfo.DisplayName, rinfo); } protected virtual void OnButtonRemoveClicked (object sender, System.EventArgs e) |