[Gtk-sharp-list] Re: TreeCellDataFunc problem
Freon
Freon <freongrr@gmail.com>
Fri, 5 Nov 2004 19:18:10 +0100
*Bump* and update
I've just tested that on Linux (Slackware 10 with Mono 1.01) and it
works just fine. Is it a bug with Gtk or Gtk# or something?
On Mon, 1 Nov 2004 15:09:57 +0100, Freon <freongrr@gmail.com> wrote:
> Hi,
>
> I've been trying to get custom formatting in a TreeView using
> TreeCellDataFunc, but to no avail.
> Everything works fine when defining the tree or when the delegate
> testDataFunc() is executed, but it crashes on ShowAll() with the
> following error message:
>
> Error : at Gtk.Widget.gtk_widget_show_all(IntPtr raw)
> at Gtk.Widget.ShowAll()
> at TreeViewTest.Main(String[] args) in
> c:\mono\prj\bugtreeview\main.cs:line 35
>
> (<unknown>:3692): Gtk-CRITICAL **: file gtkmain.c: line 1187
> (gtk_main_quit): assertion `main_loops != NULL' failed
>
> Here is the test file I use:
> (btw, I'm running WindowsXP with mono 1.0.2)
>
> -----------------------------------------------------------
>
> using System;
> using System.Collections;
> using Gtk;
>
> public class TreeViewTest
> {
> public static void Main(string[] args)
> {
> try
> {
> Application.Init();
>
> Window win = new Window("TreeView Test");
> win.DeleteEvent += new DeleteEventHandler(OnWindowDeleteEvent);
> win.SetDefaultSize(400,250);
>
> ScrolledWindow sw = new ScrolledWindow();
> win.Add(sw);
>
> TreeStore store = new TreeStore( typeof (string) );
>
> for (int i=0; i < 5; i++)
> {
> TreeIter iter = store.AppendValues("Line " + i);
> }
>
> TreeView tv = new TreeView();
> tv.Model = store;
> tv.HeadersVisible = true;
>
> tv.AppendColumn("Test", new CellRendererText(), new
> TreeCellDataFunc(testDataFunc) );
>
> sw.Add(tv);
> sw.Show();
> win.ShowAll();
> Application.Run();
> }
> catch(Exception e)
> {
> Console.WriteLine( "Error : " + e.StackTrace );
> Application.Quit();
> }
> }
>
> private static void testDataFunc (
> TreeViewColumn column,
> CellRenderer renderer,
> TreeModel model,
> TreeIter iter)
> {
> try
> {
> string text = model.GetValue(iter, 0) as string;
> (renderer as CellRendererText).Text = text.ToUpper();
> }
> catch (Exception e)
> {
> Console.WriteLine( "error : " + e.ToString() );
> }
> }
>
> public static void OnWindowDeleteEvent(object o, DeleteEventArgs args)
> {
> Application.Quit();
> args.RetVal = true;
> }
> }
>
> -----------------------
>
> Thanks in advance :)
>