[Gtk-sharp-list] Using ListViews/TreeViews in Gtk#?

Daniel Morgan danmorg@sc.rr.com
Tue, 4 Mar 2003 12:32:27 -0500


This is a multi-part message in MIME format.

------=_NextPart_000_0005_01C2E24A.1E0F1F40
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit

I have a DataGrid.cs in the mcs source
at mcs/tools/SqlSharp/gui/gtk-sharp which contains
a TreeView using a ListStore TreeModel.

Basically, this is like
a ListView or DataGrid you might be interested in using.

The easy way I've found to populate the DataGrid is to create
a System.Data.DataTable.  First, create the DataColumns and add them
to the DataColumnCollection in the DataTable.  Add each DataRow populating
it via
the ItemArray or via the the Item indexer.  Then, you can set the DataSource
of
the DataGrid to the DataTable.  And finally, DataBind the DataGrid to the
DataTable.
This DataGrid is not like the System.Windows.Forms.DataGrid because a
System.Windows.Forms.DataGrid allows you to update a cell, and the cell once
edited will
automatically update the DataTable.  The SQL# DataGrid does not do this.

I have a screenshot of the sample C# code included.

Here is some sample C# code:

// GtkDataGridTest.cs

using Gtk;
using GtkSharp;

using System;
using System.Collections;
using System.Data;
using System.Data.Common;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Drawing;
using System.Text;
using System.IO;
using System.Reflection;
using System.Runtime.Remoting;
using System.Diagnostics;

using Gtk.Controls;

public class GtkDataGridTest
{
	private Window win;
	private DataGrid grid;
	private DataTable table;

	public GtkDataGridTest ()
	{
		CreateGui ();
		CreateDataTable ();
		PopulateDataGrid ();
	}

	public void PopulateDataGrid ()
	{
		grid.DataSource = table;
		grid.DataBind ();
	}

	public void CreateDataTable ()
	{
		DataColumn column;
		DataRow row;

		table = new DataTable ();
		column = new DataColumn ("FirstName", typeof(string));
		table.Columns.Add (column);
		column = new DataColumn ("LastName", typeof(string));
		table.Columns.Add (column);
		column = new DataColumn ("Salary", typeof(double));
		table.Columns.Add (column);

		row = table.NewRow ();
		row["FirstName"] = "John";
		row["LastName"] = "Doe";
		row["Salary"] = 12345.56;
		table.Rows.Add (row);

		row = table.NewRow ();
		row["FirstName"] = "Jack";
		row["LastName"] = "Smith";
		row["Salary"] = 67890.12;
		table.Rows.Add (row);

		row = table.NewRow ();
		row["FirstName"] = "Bob";
		row["LastName"] = "Jones";
		row["Salary"] = 32345.04;
		table.Rows.Add (row);
	}

	public void CreateGui ()
	{
		win = new Gtk.Window ("Gtk# DataGrid Test");
		win.DeleteEvent += new
			DeleteEventHandler (OnWindow_Delete);
		win.BorderWidth = 4;
		win.DefaultSize = new Size (450, 300);

		VBox vbox = new VBox (false, 4);
		win.Add (vbox);

		grid = new DataGrid ();
		grid.Show ();

		vbox.PackStart (grid, true, true, 0);

		win.ShowAll ();
	}

	void OnWindow_Delete (object o, DeleteEventArgs args)
	{
		QuitApplication();
	}

	void QuitApplication ()
	{
		Application.Quit ();
	}

	public static int Main (string[] args)
	{
		Application.Init ();
		GtkDataGridTest gridTest = new GtkDataGridTest ();
		Application.Run ();
		return 0;
	}
}

# Makefile to build gtkdatagrid.exe
PROJECT = gtkdatagrid.exe

# Environment Variable CSHARPCOMPILER needs to be defined to use for your
compiler
# For example on Cygwin:
#   $ export CSHARPCOMPILER="/cygdrive/g/mono-0.21/install/bin/mono.exe
g:/mono-0.21/install/bin/mcs.exe"
# For example on Linux:
#   $ export CSHARPCOMPILER=mcs

# Environment Variable CLR_LIBS_PATH needs to be defined to find the CLR
class libraries
# For example on Cygwin:
#   $ export CLR_LIBS_PATH="g:/mono-0.21/install/lib"
# For example on Linux:
#   $ export CLR_LIBS_PATH="$HOME/mono/install/lib"

GTK_SHARP_LIBS = -r glib-sharp.dll -r pango-sharp.dll -r atk-sharp.dll -r
gtk-sharp.dll -r System.Drawing.dll
SQLSHARP_GTK_LIBS = $(GTK_SHARP_LIBS) -r System.Data.dll

SOURCES = GtkDataGridTest.cs DataGrid.cs

all : $(PROJECT)

$(PROJECT) : $(SOURCES)
	$(CSHARPCOMPILER) -o $(PROJECT) $(SOURCES) -lib:$(CLR_LIBS_PATH)
$(SQLSHARP_GTK_LIBS)

clean:
	rm *.exe

-----Original Message-----
From: gtk-sharp-list-admin@lists.ximian.com
[mailto:gtk-sharp-list-admin@lists.ximian.com]On Behalf Of Charles-Louis
Sent: Tuesday, March 04, 2003 8:30 AM
To: gtk-sharp-list@lists.ximian.com
Subject: [Gtk-sharp-list] Using ListViews/TreeViews in Gtk#?


Hello,

I'm pretty new to programming with Gtk and Glade. I've designed an
application with Glade that should use ListViews (but I found out that
ListViews were deprecated... so I've used a TreeView instead).

I wanted to know how I can populate these Views

eg. ---------------------------------------
    |First Name   |Last Name    | Info    |
    ---------------------------------------
    |Chuck        |Berry        | Artist  |
    ---------------------------------------
    |John         |Johnson      | Baker   |
    ---------------------------------------


Regards
--
Charles-Louis <charlouis.mono@wanadoo.be>

_______________________________________________
Gtk-sharp-list maillist  -  Gtk-sharp-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/gtk-sharp-list

------=_NextPart_000_0005_01C2E24A.1E0F1F40
Content-Type: image/png;
	name="GtkDataGridTest.PNG"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="GtkDataGridTest.PNG"

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
AASUEICwlGBGIyAAAjIIQFgyKCIGCICAEgIQlhLMaAQEQEAGAQhLBkXEAAEQUEIAwlKCGY2AAAjI
IABhyaCIGCAAAkoIQFhKMKMREAABGQQgLBkUEQMEQEAJAQhLCWY0AgIgIIMAhCWDImKAAAgoIQBh
KcGMRkAABGQQgLBkUEQMEAABJQQgLCWY0QgIgIAMAhCWDIqIAQIgoIQAhKUEMxoBARCQQQDCkkER
MUAABJQQgLCUYEYjIAACMghAWDIoIgYIgIASAhCWEsxoBARAQAYBCEsGRcQAARBQQgDCUoIZjYAA
CMggAGHJoIgYIAACSghAWEowoxEQAAEZBCAsGRQRAwRAQAkBCEsJZjQCAiAggwCEJYMiYoAACCgh
AGEpwYxGQAAEZBCAsGRQRAwQAAElBCAsJZjRCAiAgAwCEJYMiogBAiCghACEpQQzGgEBEJBBAMKS
QRExQAAElBCAsJRgRiMgAAIyCEBYMigiBgiAgBICEJYSzGgEBEBABgEISwZFxAABEFBCAMJSghmN
gAAIyCAAYcmgiBggAAJKCEBYSjCjERAAARkEICwZFBEDBEBACQEISwlmNAICICCDAIQlgyJigAAI
KCEAYSnBjEZAAARkEICwZFBEDBAAASUEICwlmNEICICADAIQlgyKiAECIKCEAISlBDMaAQEQkEEA
wpJBETFAAASUEICwlGBGIyAAAjIIQFgyKCIGCICAEgIQlhLMaAQEQEAGAQhLBkXEAAEQUEIAwlKC
GY2AAAjIIABhyaCIGCAAAkoIQFhKMKMREAABGQQgLBkUEQMEQEAJAQhLCWY0AgIgIIMAhCWDImKA
AAgoIQBhKcGMRkAABGQQgLBkUEQMEAABJQQgLCWY0QgIgIAMAhCWDIqIAQIgoIQAhKUEMxoBARCQ
QQDCkkERMUAABJQQgLCUYEYjIAACMghAWDIoIgYIgIASAhCWEsxoBARAQAYBCEsGRcQAARBQQgDC
UoIZjYAACMggAGHJoIgYIAACSghAWEowoxEQAAEZBCAsGRQRAwRAQAkBCEsJZjQCAiAggwCEJYMi
YoAACCghAGEpwYxGQAAEZBCAsGRQRAwQAAElBCAsJZjRCAiAgAwCEJYMiogBAiCghACEpQQzGgEB
EJBBAMKSQRExQAAElBCAsJRgRiMgAAIyCEBYMigiBgiAgBICEJYSzGgEBEBABgEISwZFxAABEFBC
AMJSghmNgAAIyCAAYcmgiBggAAJKCEBYSjCjERAAARkEICwZFBEDBEBACQEISwlmNAICICCDAIQl
gyJigAAIKCEAYSnBjEZAAARkEICwZFBEDBAAASUEICwlmNEICICADAIQlgyKiAECIKCEAISlBDMa
AQEQkEEAwpJBETFAAASUEICwlGBGIyAAAjIIQFgyKCIGCICAEgIQlhLMaAQEQEAGAQhLBkXEAAEQ
UEIAwlKCGY2AAAjIIABhyaCIGCAAAkoIQFhKMKMREAABGQQgLBkUEQMEQEAJAQhLCWY0AgIgIIMA
hCWDImKAAAgoIQBhKcGMRkAABGQQgLBkUEQMEAABJQQgLCWY0QgIgIAMAhCWDIqIAQIgoIQAhKUE
MxoBARCQQQDCkkERMUAABJQQgLCUYEYjIAACMghAWDIoIgYIgIASAhCWEsxoBARAQAYBCEsGRcQA
ARBQQgDCUoIZjYAACMggAGHJoIgYIAACSghAWEowoxEQAAEZBCAsGRQRAwRAQAkBCEsJZjQCAiAg
gwCEJYMiYoAACCghAGEpwYxGQAAEZBCAsGRQRAwQAAElBCAsJZjRCAiAgAwCEJYMiogBAiCghACE
pQQzGgEBEJBBAMKSQRExQAAElBCAsJRgRiMgAAIyCEBYMigiBgiAgBICEJYSzGgEBEBABgEISwZF
xAABEFBCAMJSghmNgAAIyCAAYcmgiBggAAJKCEBYSjCjERAAARkEICwZFBEDBEBACQEISwlmNAIC
ICCDAIQlgyJigAAIKCEAYSnBjEZAAARkEICwZFBEDBAAASUEICwlmNEICICADAIQlgyKiAECIKCE
AISlBDMaAQEQkEEAwpJBETFAAASUEICwlGBGIyAAAjIIQFgyKCIGCICAEgIQlhLMaAQEQEAGAQhL
BkXEAAEQUEIAwlKCGY2AAAjIIPD/HqnjnRLBXloAAAAASUVORK5CYII=

------=_NextPart_000_0005_01C2E24A.1E0F1F40--