diff options
author | Lluis Sanchez Gual <lluis@xamarin.com> | 2014-06-09 11:44:54 +0400 |
---|---|---|
committer | Lluis Sanchez Gual <lluis@xamarin.com> | 2014-06-09 11:44:54 +0400 |
commit | b9245b88bc08b2d5708a5c0e619cce69e01791fb (patch) | |
tree | 844c1bf9cf25e95de42e623850f76170a0336e2e | |
parent | 68a82ac1c178e2edbf80a52126c2c1582f737eaa (diff) |
Track api changesnode-ref
-rw-r--r-- | TestApps/Samples/Samples/ListView1.cs | 4 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.Gtk.csproj | 1 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererText.cs | 4 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs | 9 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/CustomListModel.cs | 20 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/ListStoreBackend.cs | 3 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/ListViewBackend.cs | 8 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/TreeStoreBackend.cs | 10 | ||||
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/TreeViewBackend.cs | 17 | ||||
-rw-r--r-- | Xwt.sln | 2 |
10 files changed, 49 insertions, 29 deletions
diff --git a/TestApps/Samples/Samples/ListView1.cs b/TestApps/Samples/Samples/ListView1.cs index 5c159815..7397942e 100644 --- a/TestApps/Samples/Samples/ListView1.cs +++ b/TestApps/Samples/Samples/ListView1.cs @@ -20,7 +20,7 @@ namespace Samples list.DataSource = store; list.Columns.Add ("Name", icon, name); list.Columns.Add ("Text", icon2, text); - list.Columns.Add ("Progress", new TextCellView () { TextField = text }, new CustomCell () { ValueField = progress }); + list.Columns.Add ("Progress", new TextCellView () { TextBinding = text }, new CustomCell () { ValueField = progress }); var png = Image.FromResource (typeof(App), "class.png"); @@ -105,7 +105,7 @@ namespace Samples protected override void OnMouseMoved (MouseMovedEventArgs args) { - var data = GetValue (ValueField); + var data = GetValue<CellData> (ValueField); data.Value = (int) (100 * ((args.X - Bounds.X) / Bounds.Width)); data.YPos = args.Y - Bounds.Y; QueueDraw (); diff --git a/Xwt.Gtk/Xwt.Gtk.csproj b/Xwt.Gtk/Xwt.Gtk.csproj index a0a28272..adaa8d11 100644 --- a/Xwt.Gtk/Xwt.Gtk.csproj +++ b/Xwt.Gtk/Xwt.Gtk.csproj @@ -68,7 +68,6 @@ <Compile Include="Xwt.GtkBackend\Platform.cs" /> <Compile Include="Xwt.GtkBackend\ScrollViewBackend.cs" /> <Compile Include="Xwt.GtkBackend\ComboBoxBackend.cs" /> - <Compile Include="Xwt.GtkBackend\CustomTreeModel.cs" /> <Compile Include="Xwt.GtkBackend\CustomListModel.cs" /> <Compile Include="Xwt.GtkBackend\DesignerSurfaceBackend.cs" /> <Compile Include="Xwt.GtkBackend\CustomWidgetBackend.cs" /> diff --git a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererText.cs b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererText.cs index 8de3cf42..93ae7be2 100644 --- a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererText.cs +++ b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererText.cs @@ -64,8 +64,8 @@ namespace Xwt.GtkBackend if (!view.RaiseTextChanged () && view.TextBinding != null) { Gtk.TreeIter iter; - if (TreeModel.GetIterFromString (out iter, path)) - CellUtil.SetModelValue (TreeModel, iter, view.TextBinding.Index, view.TextBinding.FieldType, args.NewText); + if (TreeModel.GetIterFromString (out iter, args.Path)) + view.TextBinding.SetValue (null, args.NewText); } } } diff --git a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs index 1b1dce89..0f718042 100644 --- a/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs +++ b/Xwt.Gtk/Xwt.GtkBackend.CellViews/CustomCellRendererToggle.cs @@ -54,16 +54,15 @@ namespace Xwt.GtkBackend SetCurrentEventRow (); var view = (ICheckBoxCellViewFrontend) Frontend; - IDataField field = (IDataField) view.StateBinding ?? view.ActiveBinding; + var field = view.StateBinding ?? view.ActiveBinding; if (!view.RaiseToggled () && (field != null)) { - Type type = field.FieldType; Gtk.TreeIter iter; if (TreeModel.GetIterFromString (out iter, args.Path)) { CheckBoxState newState; - if (view.AllowMixed && type == typeof(CheckBoxState)) { + if (view.AllowMixed && view.StateBinding != null) { if (renderer.Inconsistent) newState = CheckBoxState.Off; else if (renderer.Active) @@ -77,10 +76,10 @@ namespace Xwt.GtkBackend newState = CheckBoxState.On; } - object newValue = type == typeof(CheckBoxState) ? + object newValue = view.StateBinding != null ? (object) newState : (object) (newState == CheckBoxState.On); - CellUtil.SetModelValue (TreeModel, iter, field.Index, type, newValue); + field.SetValue (null, newValue); } } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/CustomListModel.cs b/Xwt.Gtk/Xwt.GtkBackend/CustomListModel.cs index 31c543ae..5283b100 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/CustomListModel.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/CustomListModel.cs @@ -68,6 +68,7 @@ namespace Xwt.GtkBackend public int Count; public RowNode FirstChild; public RowNode LastChild; + public RowNode Parent; } public CustomListModel (IntPtr p): base (p) @@ -132,10 +133,17 @@ namespace Xwt.GtkBackend break; } case NotifyCollectionChangedAction.Replace: - for (int n = e.NewStartingIndex; n < e.NewStartingIndex + e.NewItems.Count; n++) { - var p = new Gtk.TreePath (new int[] { n }); - var it = IterFromNode (n); - adapter.EmitRowChanged (p, it); + { + var nod = GetNodeAtRow (data.Parent, e.NewStartingIndex); + var index = e.NewStartingIndex; + var count = e.NewItems.Count; + while (count-- > 0 && nod != null) { + var p = new Gtk.TreePath (new int[] { index }); + var it = IterFromNode (nod); + adapter.EmitRowChanged (p, it); + nod = nod.Next; + } + break; } } parentWidget.QueueResize (); @@ -226,7 +234,7 @@ namespace Xwt.GtkBackend var en = col.GetEnumerator (); parent.Children.Enumerator = en; if (en.MoveNext ()) - parent.Children.FirstChild = parent.Children.LastChild = CreateNode (0, en.Current); + return parent.Children.FirstChild = parent.Children.LastChild = CreateNode (0, en.Current); else { parent.Children = emptyCollection; return null; @@ -361,7 +369,7 @@ namespace Xwt.GtkBackend public bool IterChildren (out Gtk.TreeIter iter, Gtk.TreeIter parent) { - var node = NodeFromIter (parent); + var node = !parent.Equals (Gtk.TreeIter.Zero) ? NodeFromIter (parent) : root; if (node == null) { iter = Gtk.TreeIter.Zero; return false; diff --git a/Xwt.Gtk/Xwt.GtkBackend/ListStoreBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/ListStoreBackend.cs index 47a69434..9e5cce8a 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/ListStoreBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/ListStoreBackend.cs @@ -27,6 +27,7 @@ using System; using Xwt.Backends; using Xwt.Drawing; +using System.Collections.Specialized; namespace Xwt.GtkBackend { @@ -128,6 +129,8 @@ namespace Xwt.GtkBackend { List.Clear (); } + + public event NotifyCollectionChangedEventHandler CollectionChanged; } } diff --git a/Xwt.Gtk/Xwt.GtkBackend/ListViewBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/ListViewBackend.cs index 7869247a..075a82d6 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/ListViewBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/ListViewBackend.cs @@ -64,12 +64,8 @@ namespace Xwt.GtkBackend public void SetSource (object source, IBackend sourceBackend) { - ListStoreBackend b = sourceBackend as ListStoreBackend; - if (b == null) { - CustomListModel model = new CustomListModel (source, Widget); - Widget.Model = model.Store; - } else - Widget.Model = b.Store; + CustomListModel model = new CustomListModel (source, Widget); + Widget.Model = model.Store; } public void SelectRow (int row) diff --git a/Xwt.Gtk/Xwt.GtkBackend/TreeStoreBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/TreeStoreBackend.cs index 65986259..c346042d 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/TreeStoreBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/TreeStoreBackend.cs @@ -156,12 +156,22 @@ namespace Xwt.GtkBackend SetValue (tpos.Iter, column, value); } + public void SetValue (object pos, int column, object value) + { + SetValue ((TreePosition)pos, column, value); + } + public object GetValue (TreePosition pos, int column) { IterPos tpos = GetIterPos (pos); return GetValue (tpos.Iter, column); } + public object GetValue (object pos, int column) + { + return GetValue ((TreePosition)pos, column); + } + public TreePosition InsertBefore (TreePosition pos) { version++; diff --git a/Xwt.Gtk/Xwt.GtkBackend/TreeViewBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/TreeViewBackend.cs index 72e6c0b4..cebf1464 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/TreeViewBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/TreeViewBackend.cs @@ -27,6 +27,7 @@ using System; using Xwt.Backends; using System.Linq; +using System.Collections.Generic; namespace Xwt.GtkBackend { @@ -38,7 +39,11 @@ namespace Xwt.GtkBackend protected new ITreeViewEventSink EventSink { get { return (ITreeViewEventSink)base.EventSink; } } - + + public void SetTemplates (IEnumerable<TreeItemTemplate> templates) + { + } + public override void EnableEvent (object eventId) { base.EnableEvent (eventId); @@ -159,12 +164,12 @@ namespace Xwt.GtkBackend public void SetSource (ITreeDataSource source, IBackend sourceBackend) { - TreeStoreBackend b = sourceBackend as TreeStoreBackend; - if (b == null) { - CustomTreeModel model = new CustomTreeModel (source); + // TreeStoreBackend b = sourceBackend as TreeStoreBackend; + //if (b == null) { + CustomListModel model = new CustomListModel (source, Widget); Widget.Model = model.Store; - } else - Widget.Model = b.Store; + //} else + // Widget.Model = b.Store; } public TreePosition[] SelectedRows { @@ -576,7 +576,7 @@ Global {C1DF0C90-0C4C-4AB5-A45C-A1805587A844} = {83D74DDF-581E-4E2A-AE02-F4047A5B96C7}
EndGlobalSection
GlobalSection(MonoDevelopProperties) = preSolution
- StartupItem = TestApps\WpfTest\WpfTest.csproj
+ StartupItem = TestApps\GtkOnMacTest\GtkOnMacTest.csproj
Policies = $0
$0.DotNetNamingPolicy = $1
$1.DirectoryNamespaceAssociation = None
|