diff options
author | Michael Hutchinson <m.j.hutchinson@gmail.com> | 2014-04-23 03:11:06 +0400 |
---|---|---|
committer | Michael Hutchinson <m.j.hutchinson@gmail.com> | 2014-04-23 03:11:06 +0400 |
commit | 1212e5945cd664a53e9145cef3d7f23d96d531da (patch) | |
tree | 555d073f596f402796dcbdb25452ea70eff6f6ae /main/src/core/MonoDevelop.Ide | |
parent | 9091b37d00f18816d95e117c0a40c301aadc8ccd (diff) |
[Ide] Try to prevent bad policy names
Disallow creating and loading policies with empty names.
BXC19194 - Adding new policy shows error
'System.Reflection.TargetInvocationException'.
Diffstat (limited to 'main/src/core/MonoDevelop.Ide')
3 files changed, 13 insertions, 7 deletions
diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs index 91e259e80b..eaac1af0c3 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/DefaultPolicyOptionsDialog.cs @@ -179,10 +179,10 @@ namespace MonoDevelop.Ide.Projects NewPolicySetDialog dlg = new NewPolicySetDialog (new List<PolicySet> (esets)); try { - if (MessageService.RunCustomDialog (dlg, this) == (int) Gtk.ResponseType.Ok) { + if (MessageService.RunCustomDialog (dlg, this) == (int) ResponseType.Ok) { PolicySet pset = new PolicySet (); pset.CopyFrom (dlg.SourceSet); - pset.Name = dlg.PolicyName; + pset.Name = GetUnusedName (dlg.PolicyName); sets.Add (pset); FillPolicySets (); policiesCombo.Active = sets.IndexOf (pset); @@ -199,7 +199,7 @@ namespace MonoDevelop.Ide.Projects if (MessageService.RunCustomDialog (dlg, this) == (int) Gtk.ResponseType.Ok) { PolicySet pset = new PolicySet (); pset.CopyFrom (dlg.SelectedItem.Policies); - pset.Name = GetValidName (dlg.PolicyName); + pset.Name = GetUnusedName (dlg.PolicyName); sets.Add (pset); FillPolicySets (); policiesCombo.Active = sets.IndexOf (pset); @@ -223,7 +223,7 @@ namespace MonoDevelop.Ide.Projects pset.LoadFromFile (dlg.SelectedFile); if (string.IsNullOrEmpty (pset.Name)) pset.Name = dlg.SelectedFile.FileNameWithoutExtension; - pset.Name = GetValidName (pset.Name); + pset.Name = GetUnusedName (pset.Name); sets.Add (pset); ExportProjectPolicyDialog.DefaultFileDialogPolicyDir = dlg.SelectedFile.ParentDirectory; FillPolicySets (); @@ -234,7 +234,7 @@ namespace MonoDevelop.Ide.Projects } } - string GetValidName (string name) + string GetUnusedName (string name) { string finalName = name; int n = 1; @@ -292,7 +292,7 @@ namespace MonoDevelop.Ide.Projects ((ListStore)policiesCombo.Model).Clear (); policiesCombo.WidthRequest = -1; - sets.Sort ((p1,p2) => p1.Name.CompareTo(p2.Name)); + sets.Sort ((p1, p2) => string.Compare (p1.Name, p2.Name, StringComparison.CurrentCulture)); foreach (PolicySet pset in sets) { policiesCombo.AppendText (pset.Name ?? ""); diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs index 9863154e32..576b13aa4f 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/ExportProjectPolicyDialog.cs @@ -96,7 +96,7 @@ namespace MonoDevelop.Ide.Projects UpdateWidgets (); } - protected void OnButtonOkClicked (object sender, System.EventArgs e) + protected void OnButtonOkClicked (object sender, EventArgs e) { if (radioCustom.Active) { if (entryName.Text.Length == 0) { diff --git a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewPolicySetDialog.cs b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewPolicySetDialog.cs index ba0451c16e..43933126e2 100644 --- a/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewPolicySetDialog.cs +++ b/main/src/core/MonoDevelop.Ide/MonoDevelop.Ide.Projects/NewPolicySetDialog.cs @@ -36,10 +36,16 @@ namespace MonoDevelop.Ide.Projects public NewPolicySetDialog (List<PolicySet> sets) { this.Build (); + this.sets = sets; foreach (var ps in sets) comboSets.AppendText (ps.Name); comboSets.Active = 0; + + buttonOk.Sensitive = false; + entryName.Changed += delegate { + buttonOk.Sensitive = !string.IsNullOrWhiteSpace (entryName.Text); + }; } public string PolicyName { |