<!-- ##### SECTION Title ##### -->
GdaDataProxy

<!-- ##### SECTION Short_Description ##### -->
Proxy to hold modifications for any #GdaDataModel, and provides the #GdaDataModel interface itself

<!-- ##### SECTION Long_Description ##### -->
<para>
  This object stores modifications made to a #GdaDataModel object which is proxied until asked to make the changes
  inside the #GdaDataModel, it also filters the proxied data model to show only a sample (a defined number of continuous
  rows) of it.
</para>
<para>
  Specifically, for a proxied data model having <varname>nb_cols</varname> columns and <varname>nb_rows</varname> rows, 
  the #GdaDataProxy object has the following attributes:
  <itemizedlist>
    <listitem>
      <para><varname>2 * nb_cols</varname> columns:
	<itemizedlist>
	  <listitem><para>the first (&gt;= 0) <varname>nb_cols</varname> columns are the current values stored in the 
	      proxy (which correspond to the values of the proxied data model if the considered row has not been 
	      changed). The associated values are writable.</para></listitem>
	  <listitem><para>the last <varname>nb_cols</varname> columns are the values stored in the proxied data model, 
	      at column <varname>col - nb_cols</varname></para></listitem>
	</itemizedlist>
      </para>
    </listitem>
    <listitem><para>a variable number of rows depending on the following attributes:
	<itemizedlist>
	  <listitem><para>if the proxy is configured to have an empty row as the first row</para></listitem>
	  <listitem><para>if the proxy only displays parts of the proxied data model</para></listitem>
	  <listitem><para>if new rows have been added to the proxy</para></listitem>
	</itemizedlist>
    </para></listitem>
  </itemizedlist>
  Note that unless explicitely mentionned, the columns are read-only.
</para>

<!-- ##### SECTION See_Also ##### -->
<para>

</para>

<!-- ##### SECTION Stability_Level ##### -->


<!-- ##### STRUCT GdaDataProxy ##### -->
<para>

</para>


<!-- ##### SIGNAL GdaDataProxy::row-delete-changed ##### -->
<para>

</para>

@gdadataproxy: the object which received the signal.
@arg1: 
@arg2: 

<!-- ##### SIGNAL GdaDataProxy::sample-changed ##### -->
<para>

</para>

@gdadataproxy: the object which received the signal.
@arg1: 
@arg2: 

<!-- ##### SIGNAL GdaDataProxy::sample-size-changed ##### -->
<para>

</para>

@gdadataproxy: the object which received the signal.
@arg1: 

<!-- ##### ARG GdaDataProxy:autocommit ##### -->
<para>

</para>

<!-- ##### ARG GdaDataProxy:model ##### -->
<para>

</para>

<!-- ##### ARG GdaDataProxy:prepend-null-entry ##### -->
<para>

</para>

<!-- ##### STRUCT GdaDataProxyClass ##### -->
<para>

</para>

@parent_class: 
@row_delete_changed: 
@sample_size_changed: 
@sample_changed: 

<!-- ##### STRUCT GdaDataProxyPrivate ##### -->
<para>

</para>


<!-- ##### FUNCTION gda_data_proxy_new ##### -->
<para>

</para>

@model: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_proxied_model ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_proxied_model_n_cols ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_proxied_model_n_rows ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_is_read_only ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_values ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@cols_index: 
@n_cols: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_value_attributes ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@col: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_alter_value_attributes ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@col: 
@alter_flags: 


<!-- ##### FUNCTION gda_data_proxy_get_proxied_model_row ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_delete ##### -->
<para>

</para>

@proxy: 
@proxy_row: 


<!-- ##### FUNCTION gda_data_proxy_undelete ##### -->
<para>

</para>

@proxy: 
@proxy_row: 


<!-- ##### FUNCTION gda_data_proxy_row_is_deleted ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_find_row_from_values ##### -->
<para>

</para>

@proxy: 
@values: 
@cols_index: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_cancel_row_changes ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@col: 


<!-- ##### FUNCTION gda_data_proxy_apply_row_changes ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@error: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_has_changed ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_row_has_changed ##### -->
<para>

</para>

@proxy: 
@proxy_row: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_n_new_rows ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_set_sample_size ##### -->
<para>

</para>

@proxy: 
@sample_size: 


<!-- ##### FUNCTION gda_data_proxy_get_sample_size ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_set_sample_start ##### -->
<para>

</para>

@proxy: 
@sample_start: 


<!-- ##### FUNCTION gda_data_proxy_get_sample_start ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_get_sample_end ##### -->
<para>

</para>

@proxy: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_apply_all_changes ##### -->
<para>

</para>

@proxy: 
@error: 
@Returns: 


<!-- ##### FUNCTION gda_data_proxy_cancel_all_changes ##### -->
<para>

</para>

@proxy: 
@Returns: 


