[Gtk-sharp-list] Creating a derivate class from GtkBin.
Miguel de Icaza
miguel@ximian.com
14 Jul 2003 21:37:20 -0400
Hello,
Today the issue of deriving from GtkBin came out, and I did some
investigation about how to do this. There are a few issues that came
out that are probably worth discussing.
A sample is attached.
The issues:
* For classes that derive from an abstract C-GObject class, they
need to register a new GType and use their parent constructor
with the GType argument.
* To initialize the type, you must do that in a static
constructor.
* In the case of Bin derivatives, for the class to do something
interesting (just like in C), you must hook up to various
events, in the particular case of Bin, you need to hook up
to SizeAllocated and set the size of your children (if you
want to participate in size negotiation, you should also hook
to SizeRequested).
Basically, the only issue is that we might want to have this
information on the documentation.
Miguel.
using GtkSharp;
class MyBin : Bin {
static GLib.Type type;
static MyBin ()
{
type = RegisterGType (typeof (MyBin));
}
public MyBin () : base (type)
{
SizeAllocate (new Gdk.Rectangle (0, 0, 100, 100));
Added += new AddedHandler (MyAdded);
}
void MyAdded (object o, AddedArgs args)
{
args.Widget.SizeAllocate (new Gdk.Rectangle (10, 10, 90, 90));
}
}
class Y {
static void Main ()
{
Application.Init ();
Window w = new Window ("Hello");
MyBin x = new MyBin ();
Button b = new Button ("Hola");
w.Add (x);
x.Add (b);
w.ShowAll ();
Application.Run ();
}
}