/// <summary> /// Creates the new column. /// set/reset the editable property /// ans set name and Column Index in a new instance /// of the new derived CellRendererText class /// </summary> /// <returns>The new column.</returns> /// <param name="index">Index.</param> /// <param name="name">Name.</param> /// <param name="editable">If set to <c>true</c> editable.</param> private Gtk.TreeViewColumn CreateNewColumn(int index, string name, bool editable) { NewCellRentererText renderer = new NewCellRentererText(); renderer.ColumnIndex = index; renderer.XmlAttributeName = name; renderer.Editable = editable; if (editable) { renderer.Edited += On_Edited_callback; renderer.EditingStarted += On_EditingStarted_callback; renderer.EditingCanceled += On_EditingCanceled_callback; } Gtk.TreeViewColumn ret = new Gtk.TreeViewColumn(renderer.XmlAttributeName, renderer); ret.AddAttribute(ret.CellRenderers [0], "text", index); return(ret); }
/// <summary> /// Handles the edited_callback event. /// </summary> /// <param name="o">O.</param> /// <param name="args">Arguments.</param> public void On_Edited_callback(object o, EditedArgs args) { object quedObject = EditingQueue.Dequeue(); NewCellRentererText ncrt = quedObject as NewCellRentererText; if (null == ncrt) { return; } TreeIter iter; TreePath path = new TreePath(args.Path); if (!musicListStore.GetIter(out iter, path)) { return; } XElement dummy = XElementIndexer [iter]; if (dummy.Attribute(ncrt.XmlAttributeName) != null) { dummy.SetAttributeValue(ncrt.XmlAttributeName, args.NewText); } else { foreach (string attrKvp in args.NewText.Split(";".ToCharArray())) { String[] attribute = attrKvp.Split(":".ToCharArray()); if (attribute.Length > 1) // && dummy.Attribute (attribute [0].Trim ()) != null) { dummy.SetAttributeValue(attribute [0].Trim(), attribute [1].Trim()); } } } musicListStore.SetValue(iter, ncrt.ColumnIndex, args.NewText); ((NewCellRentererText)o).Text = args.NewText; }