+GtkWidget*
+gtk_toolbar_append_element (GtkToolbar *toolbar,
+ GtkToolbarChildType type,
+ GtkWidget *widget,
+ const char *text,
+ const char *tooltip_text,
+ const char *tooltip_private_text,
+ GtkWidget *icon,
+ GtkSignalFunc callback,
+ gpointer user_data)
+{
+ return gtk_toolbar_insert_element (toolbar, type, widget, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data,
+ toolbar->num_children);
+}
+
+GtkWidget *
+gtk_toolbar_prepend_element (GtkToolbar *toolbar,
+ GtkToolbarChildType type,
+ GtkWidget *widget,
+ const char *text,
+ const char *tooltip_text,
+ const char *tooltip_private_text,
+ GtkWidget *icon,
+ GtkSignalFunc callback,
+ gpointer user_data)
+{
+ return gtk_toolbar_insert_element (toolbar, type, widget, text,
+ tooltip_text, tooltip_private_text,
+ icon, callback, user_data, 0);
+}
+
+GtkWidget *
+gtk_toolbar_insert_element (GtkToolbar *toolbar,
+ GtkToolbarChildType type,
+ GtkWidget *widget,
+ const char *text,
+ const char *tooltip_text,
+ const char *tooltip_private_text,
+ GtkWidget *icon,
+ GtkSignalFunc callback,
+ gpointer user_data,
+ gint position)
+{
+ GtkToolbarChild *child;
+ GtkWidget *box;
+
+ g_return_val_if_fail (toolbar != NULL, NULL);
+ g_return_val_if_fail (GTK_IS_TOOLBAR (toolbar), NULL);
+ if (type == GTK_TOOLBAR_CHILD_WIDGET)
+ {
+ g_return_val_if_fail (widget != NULL, NULL);
+ g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
+ }
+ else if (type != GTK_TOOLBAR_CHILD_RADIOBUTTON)
+ g_return_val_if_fail (widget == NULL, NULL);
+
+ if (type == GTK_TOOLBAR_CHILD_SPACE)
+ child = (GtkToolbarChild *) g_new (GtkToolbarChildSpace, 1);
+ else
+ child = g_new (GtkToolbarChild, 1);
+
+ child->type = type;
+ child->icon = NULL;
+ child->label = NULL;
+
+ switch (type)
+ {
+ case GTK_TOOLBAR_CHILD_SPACE:
+ child->widget = NULL;
+ ((GtkToolbarChildSpace *) child)->alloc_x =
+ ((GtkToolbarChildSpace *) child)->alloc_y = 0;
+ break;
+
+ case GTK_TOOLBAR_CHILD_WIDGET:
+ child->widget = widget;
+ break;
+
+ case GTK_TOOLBAR_CHILD_BUTTON:
+ case GTK_TOOLBAR_CHILD_TOGGLEBUTTON:
+ case GTK_TOOLBAR_CHILD_RADIOBUTTON:
+ if (type == GTK_TOOLBAR_CHILD_BUTTON)
+ {
+ child->widget = gtk_button_new ();
+ gtk_button_set_relief (GTK_BUTTON (child->widget), toolbar->relief);
+ }
+ else if (type == GTK_TOOLBAR_CHILD_TOGGLEBUTTON)
+ {
+ child->widget = gtk_toggle_button_new ();
+ gtk_button_set_relief (GTK_BUTTON (child->widget), toolbar->relief);
+ gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (child->widget),
+ FALSE);
+ }
+ else
+ {
+ child->widget = gtk_radio_button_new (widget
+ ? gtk_radio_button_group (GTK_RADIO_BUTTON (widget))
+ : NULL);
+ gtk_button_set_relief (GTK_BUTTON (child->widget), toolbar->relief);
+ gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (child->widget), FALSE);
+ }
+
+ GTK_WIDGET_UNSET_FLAGS (child->widget, GTK_CAN_FOCUS);
+
+ if (callback)
+ gtk_signal_connect (GTK_OBJECT (child->widget), "clicked",
+ callback, user_data);
+
+ if (toolbar->style == GTK_TOOLBAR_BOTH_HORIZ)
+ box = gtk_hbox_new (FALSE, 0);
+ else
+ box = gtk_vbox_new (FALSE, 0);
+ gtk_container_add (GTK_CONTAINER (child->widget), box);
+ gtk_widget_show (box);
+
+ if (text)
+ {
+ child->label = gtk_label_new (text);
+ gtk_box_pack_end (GTK_BOX (box), child->label, FALSE, FALSE, 0);
+ if (toolbar->style != GTK_TOOLBAR_ICONS)
+ gtk_widget_show (child->label);
+ }
+
+ if (icon)
+ {
+ child->icon = GTK_WIDGET (icon);
+ gtk_box_pack_end (GTK_BOX (box), child->icon, FALSE, FALSE, 0);
+ if (toolbar->style != GTK_TOOLBAR_TEXT)
+ gtk_widget_show (child->icon);
+ }