예제 #1
0
        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;
                            }
                        }
                    }
                }
            }
        }
예제 #2
0
        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);
                        }
                    }
                }
            }
        }
예제 #3
0
        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);
                    }
                }
            }
        }