Hi, I found some interesting custom widgets that are programmed in C. Porting them to D looks not so difficult, except for these two functions:

guint
giw_tank_get_type (){
  static guint tank_type = 0;

  if (!tank_type)
    {
      GtkTypeInfo tank_info =
      {
        "GiwTank",
        sizeof (GiwTank),
        sizeof (GiwTankClass),
        (GtkClassInitFunc) giw_tank_class_init,
        (GtkObjectInitFunc) giw_tank_init,
        /*(GtkArgSetFunc)*/ NULL,
        /*(GtkArgGetFunc)*/ NULL,
      };
      tank_type = gtk_type_unique (gtk_widget_get_type (), &tank_info);
    }
  return tank_type;
}

and

static void
giw_tank_class_init (GiwTankClass *class)
{
  GtkObjectClass *object_class;
  GtkWidgetClass *widget_class;

  object_class = (GtkObjectClass*) class;
  widget_class = (GtkWidgetClass*) class;

  parent_class = gtk_type_class (gtk_widget_get_type ());

  object_class->destroy = giw_tank_destroy;

  widget_class->realize = giw_tank_realize;
  widget_class->expose_event = giw_tank_expose;
  widget_class->size_request = giw_tank_size_request;
  widget_class->size_allocate = giw_tank_size_allocate;
  widget_class->style_set = giw_tank_style_set;
}


The alternative would be to set-up the mingw-toolchain and do some wrapper like you do for the rest of the library, but for some simple widgets it lloks liek too much hassle :-)

Thanks,
Tom