GtkSharpNodeViewTutorialExamples
Example Programs from the Gtk# NodeView Tutorial
This page contains the sample applications and compile instructions for the applications described in the tutorial.
Simple NodeView
The first example can be compiled with the command:
mcs -pkg:gtk-sharp-2.0 filename.cs
The source for the program:
namespace NodeViewTutorial {
[Gtk.TreeNode (ListOnly=true)]
public class MyTreeNode : Gtk.TreeNode {
string song_title;
public MyTreeNode (string artist, string song_title)
{
Artist = artist;
this.song_title = song_title;
}
[Gtk.TreeNodeValue (Column=0)]
public string Artist;
[Gtk.TreeNodeValue (Column=1)]
public string SongTitle {get { return song_title; } }
}
public class NodeViewExample : Gtk.Window {
public NodeViewExample () : base ("NodeView")
{
SetSizeRequest (200,150);
// Create our TreeView and add it as our child widget
Gtk.NodeView view = new Gtk.NodeView (Store);
Add (view);
// Create a column with title Artist and bind its renderer to model column 0
view.AppendColumn ("Artist", new Gtk.CellRendererText (), "text", 0);
// Create a column with title 'Song Title' and bind its renderer to model column 1
view.AppendColumn ("Song Title", new Gtk.CellRendererText (), "text", 1);
view.ShowAll ();
}
protected override bool OnDeleteEvent (Gdk.Event ev)
{
Gtk.Application.Quit ();
return true;
}
Gtk.NodeStore store;
Gtk.NodeStore Store {
get {
if (store == null) {
store = new Gtk.NodeStore (typeof (MyTreeNode));
store.AddNode (new MyTreeNode ("The Beatles", "Yesterday"));
store.AddNode (new MyTreeNode ("Peter Gabriel", "In Your Eyes"));
store.AddNode (new MyTreeNode ("Rush", "Fly By Night"));
}
return store;
}
}
public static void Main ()
{
Gtk.Application.Init ();
NodeViewExample win = new NodeViewExample ();
win.Show ();
Gtk.Application.Run ();
}
}
}
Interactive NodeView
This example can be compiled with the command:
mcs -pkg:gtk-sharp-2.0 filename.cs
The source for the program:
namespace NodeViewTutorial {
[Gtk.TreeNode (ListOnly=true)]
public class MyTreeNode : Gtk.TreeNode {
string song_title;
public MyTreeNode (string artist, string song_title)
{
Artist = artist;
this.song_title = song_title;
}
[Gtk.TreeNodeValue (Column=0)]
public string Artist;
[Gtk.TreeNodeValue (Column=1)]
public string SongTitle {get { return song_title; } }
}
public class NodeViewExample : Gtk.Window {
Gtk.Label label;
public NodeViewExample () : base ("NodeView")
{
SetSizeRequest (300,225);
Gtk.Box box = new Gtk.VBox (false, 0);
Add (box);
label = new Gtk.Label ("Current Selection: ");
box.PackStart (label, false, false, 5);
Gtk.NodeView view = new Gtk.NodeView (Store);
box.PackStart (view, true, true, 5);
// Create a column with title Artist and bind its renderer to model column 0
view.AppendColumn ("Artist", new Gtk.CellRendererText (), "text", 0);
// Create a column with title 'Song Title' and bind its renderer to model column 1
view.AppendColumn ("Song Title", new Gtk.CellRendererText (), "text", 1);
view.NodeSelection.Changed += new System.EventHandler (OnSelectionChanged);
box.ShowAll ();
}
void OnSelectionChanged (object o, System.EventArgs args)
{
Gtk.NodeSelection selection = (Gtk.NodeSelection) o;
MyTreeNode node = (MyTreeNode) selection.SelectedNode;
label.Text = "Current Selection: \"" + node.SongTitle + "\" by " + node.Artist;
}
protected override bool OnDeleteEvent (Gdk.Event ev)
{
Gtk.Application.Quit ();
return true;
}
Gtk.NodeStore store;
Gtk.NodeStore Store {
get {
if (store == null) {
store = new Gtk.NodeStore (typeof (MyTreeNode));
store.AddNode (new MyTreeNode ("The Beatles", "Yesterday"));
store.AddNode (new MyTreeNode ("Peter Gabriel", "In Your Eyes"));
store.AddNode (new MyTreeNode ("Rush", "Fly By Night"));
}
return store;
}
}
public static void Main ()
{
Gtk.Application.Init ();
NodeViewExample win = new NodeViewExample ();
win.Show ();
Gtk.Application.Run ();
}
}
}