#include #include "dw_container.h" static void Dw_container_init (DwContainer *container); static void Dw_container_class_init (DwContainerClass *klass); static void Dw_container_destroy (GtkObject *object); enum { ADD, REMOVE, LAST_SIGNAL }; /* static guint container_signals[LAST_SIGNAL] = { 0 }; */ static DwWidgetClass *parent_class; /* * Standard Gtk+ function */ GtkType a_Dw_container_get_type (void) { static GtkType type = 0; if (!type) { GtkTypeInfo info = { "DwContainer", sizeof (DwContainer), sizeof (DwContainerClass), (GtkClassInitFunc) Dw_container_class_init, (GtkObjectInitFunc) Dw_container_init, (GtkArgSetFunc) NULL, (GtkArgGetFunc) NULL, (GtkClassInitFunc) NULL }; type = gtk_type_unique (DW_TYPE_WIDGET, &info); } return type; } /* * Standard Gtk+ function */ static void Dw_container_init (DwContainer *container) { } /* * Standard Gtk+ function */ static void Dw_container_class_init (DwContainerClass *klass) { GtkObjectClass *object_class; parent_class = gtk_type_class (DW_TYPE_WIDGET); object_class = GTK_OBJECT_CLASS (klass); #if 0 container_signals[ADD] = gtk_signal_new ("add", GTK_RUN_FIRST, object_class->type, GTK_SIGNAL_OFFSET (DwContainerClass, add), gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, GTK_TYPE_WIDGET); container_signals[REMOVE] = gtk_signal_new ("remove", GTK_RUN_FIRST, object_class->type, GTK_SIGNAL_OFFSET (DwContainerClass, remove), gtk_marshal_NONE__POINTER, GTK_TYPE_NONE, 1, GTK_TYPE_WIDGET); #endif object_class->destroy = Dw_container_destroy; } /* * Standard Gtk+ function */ static void Dw_container_destroy (GtkObject *object) { a_Dw_container_forall (DW_CONTAINER (object), (DwCallback) gtk_object_destroy, NULL); GTK_OBJECT_CLASS(parent_class)->destroy (object); } /* * Add a widget in a "standard" way. Currently not used in dillo, * perhaps never needed. */ void a_Dw_container_add (DwContainer *container, DwWidget *child) { DwContainerClass *klass; klass = DW_CONTAINER_CLASS (GTK_OBJECT (container)->klass); if (klass->add) (* (klass->add)) (container, child); } /* * */ void a_Dw_container_forall (DwContainer *container, DwCallback callback, gpointer callback_data) { DwContainerClass *klass; klass = DW_CONTAINER_CLASS (GTK_OBJECT (container)->klass); if (klass->forall) (* (klass->forall)) (container, callback, callback_data); /* The following code is handy for testing DwIterator: */ /* DwIterator *it; if ((it = a_Dw_widget_iterator (DW_WIDGET (container), DW_CONTENT_WIDGET))) { while (a_Dw_iterator_next(it)) callback (it->content.data.widget, callback_data); a_Dw_iterator_free (it); } */ } void Dw_container_remove (DwContainer *container, DwWidget *child) { DwContainerClass *klass; klass = DW_CONTAINER_CLASS (GTK_OBJECT (container)->klass); if (klass->remove) (* (klass->remove)) (container, child); }