static gboolean glade_gtk_box_configure_end (GladeFixed * fixed, GladeWidget * child, GtkWidget * box) { GList *list, *l, *children; GList *prop_list = NULL; children = gtk_container_get_children (GTK_CONTAINER (box)); for (list = children; list; list = list->next) { GtkWidget *bchild = list->data; for (l = glade_gtk_box_original_positions; l; l = l->next) { GladeGtkBoxChild *gbchild = l->data; GladeWidget *gchild = glade_widget_get_from_gobject (gbchild->widget); if (bchild == gbchild->widget) { GCSetPropData *prop_data = g_new0 (GCSetPropData, 1); prop_data->property = glade_widget_get_pack_property (gchild, "position"); prop_data->old_value = g_new0 (GValue, 1); prop_data->new_value = g_new0 (GValue, 1); glade_property_get_value (prop_data->property, prop_data->new_value); g_value_init (prop_data->old_value, G_TYPE_INT); g_value_set_int (prop_data->old_value, gbchild->position); prop_list = g_list_prepend (prop_list, prop_data); break; } } } g_list_free (children); glade_command_push_group (_("Ordering children of %s"), glade_widget_get_name (GLADE_WIDGET (fixed))); glade_property_push_superuser (); if (prop_list) glade_command_set_properties_list (glade_widget_get_project (GLADE_WIDGET (fixed)), prop_list); glade_property_pop_superuser (); glade_command_pop_group (); for (l = glade_gtk_box_original_positions; l; l = l->next) g_free (l->data); glade_gtk_box_original_positions = (g_list_free (glade_gtk_box_original_positions), NULL); return TRUE; }
static GList * create_command_property_list (GladeWidget * gnew, GList * saved_props) { GList *l, *command_properties = NULL; for (l = saved_props; l; l = l->next) { GladeProperty *property = l->data; GladePropertyClass *pclass = glade_property_get_class (property); GladeProperty *orig_prop = glade_widget_get_pack_property (gnew, glade_property_class_id (pclass)); GCSetPropData *pdata = g_new0 (GCSetPropData, 1); pdata->property = orig_prop; pdata->old_value = g_new0 (GValue, 1); pdata->new_value = g_new0 (GValue, 1); glade_property_get_value (orig_prop, pdata->old_value); glade_property_get_value (property, pdata->new_value); command_properties = g_list_prepend (command_properties, pdata); } return g_list_reverse (command_properties); }
static gboolean glade_gtk_grid_configure_end (GladeFixed *fixed, GladeWidget *child, GtkWidget *grid) { GladeGridChild new_child = { child, }; glade_widget_pack_property_get (child, "left-attach", &new_child.left_attach); glade_widget_pack_property_get (child, "width", &new_child.width); glade_widget_pack_property_get (child, "top-attach", &new_child.top_attach); glade_widget_pack_property_get (child, "height", &new_child.height); /* Compare the meaningfull part of the current edit. */ if (memcmp (&new_child, &grid_edit, sizeof (GladeGridChild)) != 0) { GValue left_attach_value = { 0, }; GValue width_attach_value = { 0, }; GValue top_attach_value = { 0, }; GValue height_attach_value = { 0, }; GValue new_left_attach_value = { 0, }; GValue new_width_attach_value = { 0, }; GValue new_top_attach_value = { 0, }; GValue new_height_attach_value = { 0, }; GladeProperty *left_attach_prop, *width_attach_prop, *top_attach_prop, *height_attach_prop; left_attach_prop = glade_widget_get_pack_property (child, "left-attach"); width_attach_prop = glade_widget_get_pack_property (child, "width"); top_attach_prop = glade_widget_get_pack_property (child, "top-attach"); height_attach_prop = glade_widget_get_pack_property (child, "height"); g_return_val_if_fail (GLADE_IS_PROPERTY (left_attach_prop), FALSE); g_return_val_if_fail (GLADE_IS_PROPERTY (width_attach_prop), FALSE); g_return_val_if_fail (GLADE_IS_PROPERTY (top_attach_prop), FALSE); g_return_val_if_fail (GLADE_IS_PROPERTY (height_attach_prop), FALSE); glade_property_get_value (left_attach_prop, &new_left_attach_value); glade_property_get_value (width_attach_prop, &new_width_attach_value); glade_property_get_value (top_attach_prop, &new_top_attach_value); glade_property_get_value (height_attach_prop, &new_height_attach_value); g_value_init (&left_attach_value, G_TYPE_INT); g_value_init (&width_attach_value, G_TYPE_INT); g_value_init (&top_attach_value, G_TYPE_INT); g_value_init (&height_attach_value, G_TYPE_INT); g_value_set_int (&left_attach_value, grid_edit.left_attach); g_value_set_int (&width_attach_value, grid_edit.width); g_value_set_int (&top_attach_value, grid_edit.top_attach); g_value_set_int (&height_attach_value, grid_edit.height); glade_command_push_group (_("Placing %s inside %s"), glade_widget_get_name (child), glade_widget_get_name (GLADE_WIDGET (fixed))); glade_command_set_properties (left_attach_prop, &left_attach_value, &new_left_attach_value, width_attach_prop, &width_attach_value, &new_width_attach_value, top_attach_prop, &top_attach_value, &new_top_attach_value, height_attach_prop, &height_attach_value, &new_height_attach_value, NULL); glade_command_pop_group (); g_value_unset (&left_attach_value); g_value_unset (&width_attach_value); g_value_unset (&top_attach_value); g_value_unset (&height_attach_value); g_value_unset (&new_left_attach_value); g_value_unset (&new_width_attach_value); g_value_unset (&new_top_attach_value); g_value_unset (&new_height_attach_value); } return TRUE; }