mirror of
https://github.com/Ryujinx/GtkSharp.git
synced 2025-01-12 14:05:28 +00:00
912980c396
* glib/Value.cs : add set to Val prop * glue/Makefile.am : build nodestore.c * glue/makefile.win32 : link nodestore.o * glue/nodestore.c : new, glue for TreeModel implementation * gtk/NodeStore.cs : new tree store implementation * gtk/ITreeNode.cs : new interface for nodestore node types * gtk/TreeNode.cs : abstract class for deriving nodestore nodes * gtk/TreeNodeAttribute.cs : tree node marking attr * gtk/TreeNodeValueAttribute.cs : node column marking attr * gtk/TreeView.custom : add ctor(NodeStore) svn path=/trunk/gtk-sharp/; revision=19630
108 lines
1.6 KiB
C#
108 lines
1.6 KiB
C#
// TreeNode.cs - Abstract base class to subclass for TreeNode types
|
|
//
|
|
// Author: Mike Kestner <mkestner@ximian.com>
|
|
//
|
|
// <c> 2003 Novell, Inc.
|
|
|
|
namespace Gtk {
|
|
|
|
using System;
|
|
using System.Collections;
|
|
|
|
public abstract class TreeNode : ITreeNode {
|
|
|
|
static int next_idx = 0;
|
|
|
|
int id;
|
|
ITreeNode parent;
|
|
ArrayList children = new ArrayList ();
|
|
|
|
public TreeNode ()
|
|
{
|
|
id = next_idx++;
|
|
}
|
|
|
|
public int ID {
|
|
get {
|
|
return id;
|
|
}
|
|
}
|
|
|
|
public ITreeNode Parent {
|
|
get {
|
|
return parent;
|
|
}
|
|
set {
|
|
parent = value;
|
|
}
|
|
}
|
|
|
|
public int ChildCount {
|
|
get {
|
|
return children.Count;
|
|
}
|
|
}
|
|
|
|
public int IndexOf (object o)
|
|
{
|
|
return children.IndexOf (o);
|
|
}
|
|
|
|
public ITreeNode this [int index] {
|
|
get {
|
|
if (index >= ChildCount)
|
|
return null;
|
|
|
|
return children [index] as ITreeNode;
|
|
}
|
|
}
|
|
|
|
public event EventHandler Changed;
|
|
|
|
protected void OnChanged ()
|
|
{
|
|
if (Changed == null)
|
|
return;
|
|
|
|
Changed (this, new EventArgs ());
|
|
}
|
|
|
|
public event TreeNodeAddedHandler ChildAdded;
|
|
|
|
private void OnChildAdded (ITreeNode child)
|
|
{
|
|
if (ChildAdded == null)
|
|
return;
|
|
|
|
ChildAdded (this, child);
|
|
}
|
|
|
|
public event TreeNodeRemovedHandler ChildRemoved;
|
|
|
|
private void OnChildRemoved (int old_position)
|
|
{
|
|
if (ChildRemoved == null)
|
|
return;
|
|
|
|
ChildRemoved (this, old_position);
|
|
}
|
|
|
|
public void AddChild (ITreeNode child)
|
|
{
|
|
children.Add (child);
|
|
child.Parent = this;
|
|
OnChildAdded (child);
|
|
}
|
|
|
|
public void RemoveChild (ITreeNode child)
|
|
{
|
|
int idx = children.IndexOf (child);
|
|
if (idx < 0)
|
|
return;
|
|
|
|
children.Remove (child);
|
|
OnChildRemoved (idx);
|
|
}
|
|
}
|
|
}
|