/* * Writes the source code needed to create this widget. * You have to output everything necessary to create the widget here, though * there are some convenience functions to help. */ static void gb_vbutton_box_write_source (GtkWidget * widget, GbWidgetWriteSourceData * data) { GtkButtonBoxStyle layout_style; gint spacing, default_spacing, i; gint min_width, min_height, ipad_x, ipad_y; gint default_min_width, default_min_height, default_ipad_x, default_ipad_y; if (data->create_widget) { source_add (data, " %s = gtk_vbutton_box_new ();\n", data->wname); } gb_widget_write_standard_source (widget, data); layout_style = GTK_BUTTON_BOX (widget)->layout_style; if (layout_style != GTK_BUTTONBOX_DEFAULT_STYLE) { for (i = 0; i < sizeof (GbLayoutValues) / sizeof (GbLayoutValues[0]); i ++) { if (GbLayoutValues[i] == layout_style) source_add (data, " gtk_button_box_set_layout (GTK_BUTTON_BOX (%s), %s);\n", data->wname, GbLayoutSymbols[i]); } } spacing = gtk_button_box_get_spacing (GTK_BUTTON_BOX (widget)); default_spacing = gtk_vbutton_box_get_spacing_default (); if (spacing != GTK_BUTTONBOX_DEFAULT && spacing != default_spacing) { source_add (data, " gtk_button_box_set_spacing (GTK_BUTTON_BOX (%s), %i);\n", data->wname, spacing); } gtk_button_box_get_child_size_default (&default_min_width, &default_min_height); gtk_button_box_get_child_size (GTK_BUTTON_BOX (widget), &min_width, &min_height); if ((min_width != GTK_BUTTONBOX_DEFAULT && min_width != default_min_width) || (min_height != GTK_BUTTONBOX_DEFAULT && min_height != default_min_height)) { source_add (data, " gtk_button_box_set_child_size (GTK_BUTTON_BOX (%s), %i, %i);\n", data->wname, min_width, min_height); } gtk_button_box_get_child_ipadding_default (&default_ipad_x, &default_ipad_y); gtk_button_box_get_child_ipadding (GTK_BUTTON_BOX (widget), &ipad_x, &ipad_y); if ((ipad_x != GTK_BUTTONBOX_DEFAULT && ipad_x != default_ipad_x) || (ipad_y != GTK_BUTTONBOX_DEFAULT && ipad_y != default_ipad_y)) { source_add (data, " gtk_button_box_set_child_ipadding (GTK_BUTTON_BOX (%s), %i, %i);\n", data->wname, ipad_x, ipad_y); } }
/* Gets the default number of pixels that pad the buttons in a given button box. */ int clip_GTK_BUTTONBOXGETCHILDIPADDING(ClipMachine * ClipMachineMemory) { C_widget *cbbox = _fetch_cw_arg(ClipMachineMemory); gint ipad_x, ipad_y; CHECKCWID(cbbox, GTK_IS_BUTTON_BOX); gtk_button_box_get_child_ipadding(GTK_BUTTON_BOX(cbbox->widget), &ipad_x, &ipad_y); _clip_storni(ClipMachineMemory, ipad_x, 2, 0); _clip_storni(ClipMachineMemory, ipad_y, 3, 0); return 0; err: return 1; }
/* * Gets the properties of the widget. This is used for both displaying the * properties in the property editor, and also for saving the properties. */ static void gb_vbutton_box_get_properties (GtkWidget * widget, GbWidgetGetArgData * data) { GtkButtonBoxStyle layout; gint i, spacing, min_width, min_height, ipad_x, ipad_y; gint default_spacing; gint default_min_width, default_min_height, default_ipad_x, default_ipad_y; if (data->action != GB_SAVING) gb_widget_output_int (data, Size, g_list_length (GTK_BOX (widget)->children)); layout = gtk_button_box_get_layout (GTK_BUTTON_BOX (widget)); for (i = 0; i < sizeof (GbLayoutValues) / sizeof (GbLayoutValues[0]); i++) { if (GbLayoutValues[i] == layout) gb_widget_output_choice (data, Layout, i, GbLayoutSymbols[i]); } spacing = gtk_button_box_get_spacing (GTK_BUTTON_BOX (widget)); default_spacing = gtk_vbutton_box_get_spacing_default (); if (spacing == GTK_BUTTONBOX_DEFAULT) spacing = default_spacing; gb_widget_output_int (data, Spacing, spacing); gtk_button_box_get_child_size_default (&default_min_width, &default_min_height); gtk_button_box_get_child_size (GTK_BUTTON_BOX (widget), &min_width, &min_height); if (min_width == GTK_BUTTONBOX_DEFAULT) min_width = default_min_width; if (min_height == GTK_BUTTONBOX_DEFAULT) min_height = default_min_height; gb_widget_output_int (data, Width, min_width); gb_widget_output_int (data, Height, min_height); gtk_button_box_get_child_ipadding_default (&default_ipad_x, &default_ipad_y); gtk_button_box_get_child_ipadding (GTK_BUTTON_BOX (widget), &ipad_x, &ipad_y); if (ipad_x == GTK_BUTTONBOX_DEFAULT) ipad_x = default_ipad_x; if (ipad_y == GTK_BUTTONBOX_DEFAULT) ipad_y = default_ipad_y; gb_widget_output_int (data, XPad, ipad_x); gb_widget_output_int (data, YPad, ipad_y); }