static GtkWidget *gnome_mdi_generic_child_set_label (GnomeMDIGenericChild *child, GtkWidget *old_label) { if(!child->set_label && !child->set_label_cbm) return parent_class->set_label(GNOME_MDI_CHILD(child), old_label, NULL); if(child->set_label_cbm) { GtkArg args[3]; GtkWidget *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_WIDGET; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(old_label); args[2].name = NULL; args[2].type = GTK_TYPE_WIDGET; GTK_VALUE_POINTER(args[2]) = &ret; child->set_label_cbm(NULL, child->set_label_data, 2, args); return ret; } else return child->set_label(GNOME_MDI_CHILD(child), old_label, child->set_label_data); }
static void addChild(GtkObject *mdi,gchar *name) { GnomeMDIGenericChild *child; child = gnome_mdi_generic_child_new(name); gnome_mdi_add_child(GNOME_MDI(mdi), GNOME_MDI_CHILD(child)); gnome_mdi_generic_child_set_view_creator(child, createView,name); gnome_mdi_generic_child_set_label_func(child,setLabel, NULL); gnome_mdi_add_view(GNOME_MDI(mdi), GNOME_MDI_CHILD(child)); }
static GList *gnome_mdi_generic_child_create_menus(GnomeMDIGenericChild *child, GtkWidget *view) { if(!child->create_menus && !child->create_menus_cbm) return NULL; if (child->create_menus_cbm) { GtkArg args[3]; GList *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_WIDGET; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(view); args[2].name = NULL; args[2].type = GTK_TYPE_POINTER; /* should we have a boxed type? */ GTK_VALUE_POINTER(args[2]) = &ret; child->create_menus_cbm(NULL, child->create_menus_data, 2, args); return ret; } else return child->create_menus(GNOME_MDI_CHILD(child), view, child->create_menus_data); }
/** * gnome_mdi_generic_child_new: * @name: the name of this MDI child. * * Creates a new mdi child, which has the ability to set view creators, etc * on an instance basis (rather than on a class basis like &GnomeMDIChild). * * After creation, you will need to set, at a minimum, the view creator * function. * * Return value: A newly created &GnomeMDIGenericChild object. **/ GnomeMDIGenericChild *gnome_mdi_generic_child_new (const gchar *name) { GnomeMDIGenericChild *child; child = g_object_new (GNOME_TYPE_MDI_GENERIC_CHILD, NULL); GNOME_MDI_CHILD(child)->name = g_strdup(name); return child; }
static gchar *gnome_mdi_generic_child_get_config_string (GnomeMDIGenericChild *child) { if(!child->get_config_string && !child->get_config_string_cbm) return NULL; if(child->get_config_string_cbm) { GtkArg args[2]; gchar *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_STRING; GTK_VALUE_POINTER(args[1]) = &ret; child->get_config_string_cbm(NULL, child->get_config_string_data, 1, args); return ret; } else return child->get_config_string(GNOME_MDI_CHILD(child), child->get_config_string_data); }
static GtkWidget *gnome_mdi_generic_child_create_view (GnomeMDIGenericChild *child) { if(!child->create_view && !child->create_view_cbm) { g_error("GnomeMDIGenericChild: No method for creating views was provided!"); return NULL; } if(child->create_view_cbm) { GtkArg args[2]; GtkWidget *ret = NULL; args[0].name = NULL; args[0].type = GNOME_TYPE_MDI_CHILD; GTK_VALUE_OBJECT(args[0]) = GTK_OBJECT(child); args[1].name = NULL; args[1].type = GTK_TYPE_WIDGET; GTK_VALUE_POINTER(args[1]) = &ret; child->create_view_cbm(NULL, child->create_view_data, 1, args); return ret; } else return child->create_view(GNOME_MDI_CHILD(child), child->create_view_data); }