/// <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;
        }