[Gtk-sharp-list] Custom cellrenderer
Adam Lofts
adam@negligible.co.uk
Sun, 18 Jul 2004 12:04:17 +0100
Aha!
I was deriving from CellRenderer but not passing the IntPtr to the base
constructor as you described.
Thanks alot for the help
> > Hi,
> >=20
> > I am trying to implement a custom cellrenderer as follows:
> >=20
> > class MyClass {
> > ...
> > }
> >=20
> > class MyCellRenderer {
> > MyClass TheClass {
> > set { ... }
> > }
> > }
> >=20
> > class MyWindow {
> >=20
> > MyWindow() {
> > MyTreeView.AppendColumn(=20
> > new TreeViewColumn("Channel",=20
> > new MyCellRenderer,=20
> > new TreeCellDataFunc
> (TreeChannelData))
> > );
> > }
> >=20
> > void TreeChannelData (TreeViewColumn tree_column, CellRenderer
> cell,
> > TreeModel tree_model, TreeIter iter) {
> > (cell as MyCellRenderer).TheClass =3D
> (tree_model.GetValue(iter, 1) as
> > MyClass);
> > }
> > }
> >=20
> > And get the following error:
> >=20
> > Unhandled Exception: GLib.MissingIntPtrCtorException: GLib.Object
> > subclass MyCellRenderer must provide a protected or public IntPtr
> ctor
> > to support wrapping of native object handles.
> > in <0x001e3> GLib.ObjectManager:CreateObject (intptr)
> > in <0x000e3> GLib.Object:GetObject (intptr,bool)
> > in <0x00036> Gtk.CellRenderer:GetSize_cb
> > (intptr,intptr,intptr,intptr,intptr,intptr,intptr)
> > in <0x000e8> (wrapper native-to-managed) Gtk.CellRenderer:GetSize_cb
> > (intptr,intptr,intptr,intptr,intptr,intptr,intptr)
> > in (unmanaged) (wrapper managed-to-native) Gtk.Application:gtk_main
> ()
> > in <0x00004> (wrapper managed-to-native) Gtk.Application:gtk_main ()
> > in <0x00007> Gtk.Application:Run ()
> >=20
> > Adding an empty constuctor avoids this error, eg.
> >=20
> > protected MyCellRenderer(IntPtr i) {
> >=20
> > }
> >=20
> I don't know much about gtk-sharp (nor gtk for that matter), but I
> think
> your custom cell renderer should derive from another class, say
> CellRenderer (you'll have to google because I don't know the actual
> class).
> Wrt your problem, passing the IntPtr param to the base class should
> work:
>
> protected MyCellRenderer(IntPtr i): base(i) { /* ... */ }
>
> > but this seems to create a bug. Also, the sample custom cellrenderer
> > does not need a IntPtr constructor.
> >=20
> > Any help appreciated,
> >=20
> > Adam
> >=20
> >=20
> > _______________________________________________
> > Gtk-sharp-list maillist - Gtk-sharp-list@lists.ximian.com
> > http://lists.ximian.com/mailman/listinfo/gtk-sharp-list
> --=20
> Rodolfo Campero
> http://expertcoder.sourceforge.net/