private void ComboNodeCellEdited(object o, Gtk.EditedArgs args) { Gtk.TreeIter iter; INodeCellRenderer cell = o as INodeCellRenderer; CellRendererCombo combo = o as CellRendererCombo; if (cell != null) { // Resolve path as it was passed in the arguments Gtk.TreePath tp = new Gtk.TreePath(args.Path); // Change value in the original object if (YTreeModel.Adapter.GetIter(out iter, tp)) { object obj = YTreeModel.NodeFromIter(iter); if (cell.DataPropertyInfo.CanWrite && !String.IsNullOrWhiteSpace(args.NewText)) { foreach (object[] row in (ListStore)combo.Model) { if ((string)row[(int)NodeCellRendererColumns.title] == args.NewText) { cell.DataPropertyInfo.SetValue(obj, row[(int)NodeCellRendererColumns.value], null); break; } } } } } }
private void NumericNodeCellEdited(object o, Gtk.EditedArgs args) { TreeIter iter; INodeCellRenderer cell = o as INodeCellRenderer; //CellRendererSpin cellSpin = o as CellRendererSpin; if (cell != null) { // Resolve path as it was passed in the arguments Gtk.TreePath tp = new Gtk.TreePath(args.Path); // Change value in the original object if (YTreeModel.Adapter.GetIter(out iter, tp)) { object obj = YTreeModel.NodeFromIter(iter); if (cell.DataPropertyInfo.CanWrite && !String.IsNullOrWhiteSpace(args.NewText)) { object newval = null; if (cell.EditingValueConverter == null) { try { newval = Convert.ChangeType(args.NewText, cell.DataPropertyInfo.PropertyType); } catch (FormatException ex) { Console.WriteLine("'{0}' is not number", args.NewText); } } else { newval = cell.EditingValueConverter.ConvertBack(args.NewText, cell.DataPropertyInfo.PropertyType, null, null); } if (newval != null) { cell.DataPropertyInfo.SetValue(obj, newval, null); } } } } }
private void TextNodeCellEdited(object o, Gtk.EditedArgs args) { Gtk.TreeIter iter; INodeCellRenderer cell = o as INodeCellRenderer; CellRendererText cellText = o as CellRendererText; if (cell != null) { // Resolve path as it was passed in the arguments Gtk.TreePath tp = new Gtk.TreePath(args.Path); // Change value in the original object if (YTreeModel.Adapter.GetIter(out iter, tp)) { object obj = YTreeModel.NodeFromIter(iter); if (cell.DataPropertyInfo != null && cell.DataPropertyInfo.CanWrite) { cell.DataPropertyInfo.SetValue(obj, args.NewText, null); } } } }