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:
authorMichael Hutchinson <m.j.hutchinson@gmail.com>2011-07-20 02:54:10 +0400
committerMichael Hutchinson <m.j.hutchinson@gmail.com>2011-07-20 03:42:28 +0400
commit6249d0b545c0504b10e21e228f79e8672ca4dcb9 (patch)
treeeb36fb71452dc08a7024e03a1bc6483d16289d63 /main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels
parent06ba943409c174191102737f39c471aba73b7fc1 (diff)
[Ide] Improve the target framework panel
Diffstat (limited to 'main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/RuntimeOptionsPanel.cs72
1 files changed, 38 insertions, 34 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/RuntimeOptionsPanel.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/RuntimeOptionsPanel.cs
index 65c09a20bc..8edc5f9b25 100644
--- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/RuntimeOptionsPanel.cs
+++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/RuntimeOptionsPanel.cs
@@ -66,55 +66,59 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
partial class RuntimeOptionsPanelWidget : Gtk.Bin
{
DotNetProject project;
- ArrayList supportedVersions = new ArrayList ();
+ List<TargetFramework> frameworks;
public RuntimeOptionsPanelWidget (DotNetProject project, IEnumerable<ItemConfiguration> configurations)
{
Build ();
this.project = project;
- if (project != null) {
- // Get the list of available versions, and add only those supported by the target language.
- var frameworks = Runtime.SystemAssemblyService.GetTargetFrameworks ().ToList ();
- frameworks.Sort ((x, y) => {
- var cmp = string.CompareOrdinal (x.Id.Identifier, y.Id.Identifier);
- if (cmp != 0)
- return cmp;
- //sort by version descending
- cmp = string.CompareOrdinal (y.Id.Version, x.Id.Version);
- if (cmp != 0)
- return cmp;
- return string.CompareOrdinal (x.Id.Profile, y.Id.Profile);
- });
+ if (project == null) {
+ Sensitive = false;
+ return;
+ }
+
+ frameworks = Runtime.SystemAssemblyService.GetTargetFrameworks ()
+ .Where (fx => !fx.Hidden && project.TargetRuntime.IsInstalled (fx) && project.SupportsFramework (fx))
+ .ToList ();
+
+ bool notInstalled = false;
+
+ if (!frameworks.Any (fx => fx.Id == project.TargetFramework.Id)) {
+ notInstalled = true;
+ frameworks.Add (project.TargetFramework);
+ }
- foreach (TargetFramework fx in frameworks) {
- if (fx.Hidden)
- continue;
- if (fx != project.TargetFramework) {
- if (!project.TargetRuntime.IsInstalled (fx))
- continue;
- if (!project.SupportsFramework (fx))
- continue;
- }
+ //sort by id ascending, version descending, profile ascending
+ frameworks.Sort ((x, y) => {
+ var cmp = string.CompareOrdinal (x.Id.Identifier, y.Id.Identifier);
+ if (cmp != 0)
+ return cmp;
+ cmp = string.CompareOrdinal (y.Id.Version, x.Id.Version);
+ if (cmp != 0)
+ return cmp;
+ return string.CompareOrdinal (x.Id.Profile, y.Id.Profile);
+ });
+
+ for (int i = 0; i < frameworks.Count; i++) {
+ var fx = frameworks[i];
+ if (project.TargetFramework.Id == fx.Id) {
+ string name = notInstalled? GettextCatalog.GetString ("{0} (Not installed)", fx.Name) : fx.Name;
+ runtimeVersionCombo.AppendText (name);
+ runtimeVersionCombo.Active = i;
+ } else {
runtimeVersionCombo.AppendText (fx.Name);
- if (project.TargetFramework == fx)
- runtimeVersionCombo.Active = supportedVersions.Count;
- supportedVersions.Add (fx);
}
- if (supportedVersions.Count <= 1)
- Sensitive = false;
- }
- else
- Sensitive = false;
+ }
+
+ Sensitive = frameworks.Count > 1;
}
public void Store ()
{
if (project == null || runtimeVersionCombo.Active == -1)
return;
- TargetFramework fx = (TargetFramework) supportedVersions [runtimeVersionCombo.Active];
- if (project.TargetFramework != fx)
- project.TargetFramework = fx;
+ project.TargetFramework = frameworks [runtimeVersionCombo.Active];
}
}
}