static GdaRow * create_new_row (GdaDataAccessWrapper *model) { gint i; GdaRow *row; row = gda_row_new (model->priv->nb_cols); for (i = 0; i < model->priv->nb_cols; i++) { GdaHolder *holder; GValue *dest; dest = gda_row_get_value (row, i); if (model->priv->rows_mapping) holder = gda_set_get_nth_holder ((GdaSet *) model->priv->iter, model->priv->rows_mapping [i]); else holder = gda_set_get_nth_holder ((GdaSet *) model->priv->iter, i); if (holder) { const GValue *cvalue = gda_holder_get_value (holder); if (cvalue) { gda_value_reset_with_type (dest, G_VALUE_TYPE ((GValue *) cvalue)); g_value_copy (cvalue, dest); } else gda_value_set_null (dest); } else gda_row_invalidate_value (row, dest); } gint *ptr; ptr = g_new (gint, 1); *ptr = model->priv->iter_row; g_hash_table_insert (model->priv->rows, ptr, row); /*g_print ("%s(%d)\n", __FUNCTION__, model->priv->iter_row);*/ return row; }
static void handle_user_prefs_for_sql_statement (UiFormGrid *formgrid, TConnection *tcnc, GdaSqlStatement *sqlst) { g_assert (sqlst); if (sqlst->stmt_type == GDA_SQL_STATEMENT_COMPOUND) { GdaSqlStatementCompound *comp; GSList *list; comp = (GdaSqlStatementCompound*) sqlst->contents; for (list = comp->stmt_list; list; list = list->next) handle_user_prefs_for_sql_statement (formgrid, tcnc, (GdaSqlStatement *) list->data); } else { GdaSet *set; set = (GdaSet*) ui_formgrid_get_form_data_set (UI_FORMGRID (formgrid)); GdaSqlStatementSelect *sel; GSList *list; gint pos; sel = (GdaSqlStatementSelect*) sqlst->contents; for (pos = 0, list = sel->expr_list; list; pos ++, list = list->next) { GdaSqlSelectField *field = (GdaSqlSelectField*) list->data; if (! field->validity_meta_object || (field->validity_meta_object->obj_type != GDA_META_DB_TABLE) || !field->validity_meta_table_column) continue; gchar *plugin; plugin = t_connection_get_table_column_attribute (tcnc, GDA_META_TABLE (field->validity_meta_object), field->validity_meta_table_column, T_CONNECTION_COLUMN_PLUGIN, NULL); if (!plugin) continue; GdaHolder *holder; holder = gda_set_get_nth_holder (set, pos); if (holder) { GValue *value; value = gda_value_new_from_string (plugin, G_TYPE_STRING); gda_holder_set_attribute_static (holder, GDAUI_ATTRIBUTE_PLUGIN, value); gda_value_free (value); } g_free (plugin); } } }