From 630e8aefc8a01c02e4d1dcbba75de09ff11a6393 Mon Sep 17 00:00:00 2001 From: Alan McGovern Date: Tue, 27 Mar 2012 14:52:06 +0100 Subject: [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. --- .../CustomPropertiesWidget.cs | 46 ++++++++++------------ 1 file 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) { -- cgit v1.2.3