diff options
author | Alan McGovern <alan.mcgovern@gmail.com> | 2012-03-27 17:52:06 +0400 |
---|---|---|
committer | Alan McGovern <alan.mcgovern@gmail.com> | 2012-03-29 22:04:47 +0400 |
commit | 630e8aefc8a01c02e4d1dcbba75de09ff11a6393 (patch) | |
tree | ae3dcba9ba85f52b5d2fe59b674fc663df1bda2a | |
parent | be2dbedf0e99256854d5951974ffb031a49804a3 (diff) |
[MacDev] Rewrite some of the renders so they use PListScheme items properly
We can now tell *exactly* what created a value so we can properly detect
when its Type should be rendered. We can also properly detect the identifier
and description for many more keys and tell when something should be editable
or not.
-rw-r--r-- | main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs | 46 |
1 files changed, 20 insertions, 26 deletions
diff --git a/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs b/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs index 529ae96933..d16462c26d 100644 --- a/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs +++ b/main/src/addins/MonoDevelop.MacDev/MonoDevelop.MacDev.PlistEditor/CustomPropertiesWidget.cs @@ -325,49 +325,43 @@ namespace MonoDevelop.MacDev.PlistEditor } } }; - + propRenderer.Edited += delegate(object o, EditedArgs args) { TreeIter iter; + string newText = args.NewText; if (!treeStore.GetIterFromString (out iter, args.Path)) return; - var pObject = (PObject)treeStore.GetValue (iter, 1); - if (pObject == null) - return; - string newText = args.NewText; - var key = Parent != null? Scheme.GetKey (pObject.Parent.Key) : null; + + var obj = (PObject)treeStore.GetValue (iter, 1); + var key = (PListScheme.SchemaItem) treeStore.GetValue (iter, 2); if (key != null) { - foreach (var val in key.Values) { - if (newText == val.Description) { - newText = val.Identifier; - break; - } - } + var value = key.Values.FirstOrDefault (v => v.Description == newText || v.Identifier == newText); + if (value != null) + newText = value.Identifier; } - pObject.SetValue (newText); + obj.SetValue (newText); }; treeview.AppendColumn (GettextCatalog.GetString ("Value"), propRenderer, delegate(TreeViewColumn tree_column, CellRenderer cell, TreeModel tree_model, TreeIter iter) { var renderer = (CellRendererCombo)cell; var obj = (PObject)tree_model.GetValue (iter, 1); - if (obj == null) { + var key = (PListScheme.SchemaItem) tree_model.GetValue (iter, 2) ?? PListScheme.Key.Empty; + + renderer.Sensitive = !(obj is PDictionary || obj is PArray || obj is PData); + renderer.Editable = renderer.Sensitive; + if (obj == null || !renderer.Sensitive) { renderer.Editable = false; renderer.Text = ""; return; } - - renderer.Sensitive = !(obj is PDictionary || obj is PArray || obj is PData); - + if (ShowDescriptions) { - var value = (string) tree_model.GetValue (iter, 0) ?? ""; - var key = (PListScheme.SchemaItem) tree_model.GetValue (iter, 2) ?? PListScheme.Key.Empty; - - foreach (PListScheme.SchemaItem v in key.Values) { - if (v.Identifier == value) { - renderer.Text = v.Description ?? v.Identifier; - break; - } + var value = (string) tree_model.GetValue (iter, 0); + var item = key.Values.FirstOrDefault (v => v.Identifier == value); + if (item != null) { + renderer.Text = item.Description ?? item.Identifier; + return; } - return; } switch (obj.TypeString) { |