[Gtk-sharp-list] events and TextView/Buffer

Lee Mallabone gnome@fonicmonkey.net
09 Sep 2002 18:00:17 +0100


--=-MgwpqWzX2pgT3UPRb2ud
Content-Type: text/plain
Content-Transfer-Encoding: 7bit

On Sun, 2002-09-08 at 18:36, Miguel de Icaza wrote:
> 
> > and then I try and hook in the event handler with:
> > 
> > view.InsertAtCursor += new InsertAtCursorHandler(TextWasInserted);
> > 
> > However, nothing happens. Should this work? Is this the wrong approach?
> > I've tried similar things and attempted event handling on the TextBuffer
> > as well, but events on the TextBuffer give Glib-GObject-CRITICAL
> > messages on the console.
> 
> Please provide more information about the error.

Hi,

Nothing at all happens when I have an InsertAtCursorHandler (seemingly)
connected, so it's difficult to describe in more detail. When I have a
Changed handler connected to the TextBuffer I get:

(test-text:1515): GLib-GObject-WARNING **: invalid (NULL) pointer
instance

(test-text:1515): GLib-GObject-CRITICAL **: file gsignal.c: line 1601
(g_signal_connect_data): assertion `G_TYPE_CHECK_INSTANCE (instance)'
failed

on the console.

I've attached a small test case that demonstrates the problem on my
machine. I've tested against mono 0.15, gtk-sharp 0.4 and the problems
I've described occur. I compiled it with:

 mcs  -o test.exe testTextevents.cs -r glib-sharp.dll -r pango-sharp.dll
-r atk-sharp.dll -r gdk-sharp.dll -r gtk-sharp.dll -r art-sharp.dll -r
gnome-sharp.dll

To get the warnings to appear I just have to run it.

> I believe this is invoked only when you call the functions from the C
> code.  What are you trying to do? 
> 
> My guess is that you want the "changed" signal, and not really the
> insert one.

All I really wanted to do was detect what the user has just typed into a
text widget, and depending on what they typed, insert text
automatically. It sounded like the InsertAtCursor event would be just
right...

Regards,

Lee Mallabone.


--=-MgwpqWzX2pgT3UPRb2ud
Content-Disposition: attachment; filename=testTextevents.cs
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain; name=testTextevents.cs; charset=ANSI_X3.4-1968

using System;
using Gtk;
using GtkSharp;
using Gnome;
using Pango;

public class testTextevents : App
{
    private TextView view;
    private TextBuffer buffer;
   =20
    private void TextWasInserted(object sender, InsertAtCursorArgs e)
    {
     	Console.WriteLine("Insert Event handled");
    }

   =20
    private void TextChanged(object sender, EventArgs e)
    {
     	Console.WriteLine("Standard Event handled");
    }
   =20
    public testTextevents(): base ("text-test", "Test of textview/buffer ev=
ent handling")
    {
     	ScrolledWindow scroller =3D new ScrolledWindow();
	buffer =3D new TextBuffer();
	view =3D new TextView(buffer);
	view.Indent =3D 10;
=09
//	view.InsertAtCursor +=3D new InsertAtCursorHandler(TextWasInserted);
	buffer.Changed +=3D new EventHandler(TextChanged);
=09
	FontDescription editorFont =3D FontDescription.FromString("Sans Italic 48"=
);
	if (editorFont !=3D null)
	{
	 	Console.WriteLine("Setting font...");
	 	view.ModifyFont(editorFont);
	}
	scroller.Add(view);
	Contents =3D scroller;
	ShowAll();
    }


   public static int Main (string[] args)
     {
	Program ed =3D new Program("test-text", "0.1",
				 Modules.UI, args);
	new testTextevents().ShowAll();

	ed.Run();
	return 0;
     }
  =20

}

--=-MgwpqWzX2pgT3UPRb2ud--