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
parent06ba943409c174191102737f39c471aba73b7fc1 (diff)
[Ide] Improve the target framework panel
Diffstat (limited to 'main/src/core')
-rw-r--r--main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects.OptionPanels/RuntimeOptionsPanel.cs72
-rw-r--r--main/src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.RuntimeOptionsPanelWidget.cs2
-rw-r--r--main/src/core/MonoDevelop.Ide/gtk-gui/gui.stetic2
3 files changed, 40 insertions, 36 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];
}
}
}
diff --git a/main/src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.RuntimeOptionsPanelWidget.cs b/main/src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.RuntimeOptionsPanelWidget.cs
index 7a6a2a440d..98f5b749d3 100644
--- a/main/src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.RuntimeOptionsPanelWidget.cs
+++ b/main/src/core/MonoDevelop.Ide/gtk-gui/MonoDevelop.Ide.Projects.OptionPanels.RuntimeOptionsPanelWidget.cs
@@ -27,7 +27,7 @@ namespace MonoDevelop.Ide.Projects.OptionPanels
this.label114 = new global::Gtk.Label ();
this.label114.Name = "label114";
this.label114.Xalign = 0F;
- this.label114.LabelProp = global::MonoDevelop.Core.GettextCatalog.GetString ("Runtime _version:");
+ this.label114.LabelProp = global::MonoDevelop.Core.GettextCatalog.GetString ("Target _framework:");
this.label114.UseUnderline = true;
this.hbox68.Add (this.label114);
global::Gtk.Box.BoxChild w1 = ((global::Gtk.Box.BoxChild)(this.hbox68 [this.label114]));
diff --git a/main/src/core/MonoDevelop.Ide/gtk-gui/gui.stetic b/main/src/core/MonoDevelop.Ide/gtk-gui/gui.stetic
index c8efc1d00c..d91edad5db 100644
--- a/main/src/core/MonoDevelop.Ide/gtk-gui/gui.stetic
+++ b/main/src/core/MonoDevelop.Ide/gtk-gui/gui.stetic
@@ -9008,7 +9008,7 @@ All solutions</property>
<widget class="Gtk.Label" id="label114">
<property name="MemberName" />
<property name="Xalign">0</property>
- <property name="LabelProp" translatable="yes">Runtime _version:</property>
+ <property name="LabelProp" translatable="yes">Target _framework:</property>
<property name="UseUnderline">True</property>
</widget>
<packing>