[libgda] Improvements in the GdauiDataSelector's implementations
- From: Vivien Malerba <vivien src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [libgda] Improvements in the GdauiDataSelector's implementations
- Date: Thu, 14 Jan 2010 19:37:56 +0000 (UTC)
commit 7078a5b41e2e73b0de975d60660b30ae6abaaa4c
Author: Vivien Malerba <malerba gnome-db org>
Date: Wed Jan 13 20:48:42 2010 +0100
Improvements in the GdauiDataSelector's implementations
libgda-ui/gdaui-cloud.c | 6 +++---
libgda-ui/gdaui-combo.c | 6 +++---
libgda-ui/gdaui-data-selector.c | 21 +++++++++++++++++++--
libgda-ui/gdaui-data-selector.h | 4 ++--
libgda-ui/gdaui-form.c | 6 +++---
libgda-ui/gdaui-grid.c | 6 +++---
libgda-ui/gdaui-raw-form.c | 25 +++++++++++++++++++------
libgda-ui/gdaui-raw-grid.c | 37 ++++++++++++++++++++++++++++++-------
8 files changed, 82 insertions(+), 29 deletions(-)
---
diff --git a/libgda-ui/gdaui-cloud.c b/libgda-ui/gdaui-cloud.c
index e18b25a..f9d8ac5 100644
--- a/libgda-ui/gdaui-cloud.c
+++ b/libgda-ui/gdaui-cloud.c
@@ -43,7 +43,7 @@ static void gdaui_cloud_selector_init (GdauiDataSelectorIface *ifac
static GdaDataModel *cloud_selector_get_model (GdauiDataSelector *iface);
static void cloud_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
static GArray *cloud_selector_get_selected_rows (GdauiDataSelector *iface);
-static GdaDataModelIter *cloud_selector_get_current_selection (GdauiDataSelector *iface);
+static GdaDataModelIter *cloud_selector_get_data_set (GdauiDataSelector *iface);
static gboolean cloud_selector_select_row (GdauiDataSelector *iface, gint row);
static void cloud_selector_unselect_row (GdauiDataSelector *iface, gint row);
static void cloud_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -178,7 +178,7 @@ gdaui_cloud_selector_init (GdauiDataSelectorIface *iface)
iface->get_model = cloud_selector_get_model;
iface->set_model = cloud_selector_set_model;
iface->get_selected_rows = cloud_selector_get_selected_rows;
- iface->get_current_selection = cloud_selector_get_current_selection;
+ iface->get_data_set = cloud_selector_get_data_set;
iface->select_row = cloud_selector_select_row;
iface->unselect_row = cloud_selector_unselect_row;
iface->set_column_visible = cloud_selector_set_column_visible;
@@ -1139,7 +1139,7 @@ cloud_selector_get_selected_rows (GdauiDataSelector *iface)
}
static GdaDataModelIter *
-cloud_selector_get_current_selection (GdauiDataSelector *iface)
+cloud_selector_get_data_set (GdauiDataSelector *iface)
{
GdauiCloud *cloud;
diff --git a/libgda-ui/gdaui-combo.c b/libgda-ui/gdaui-combo.c
index 7f3cc11..afa351a 100644
--- a/libgda-ui/gdaui-combo.c
+++ b/libgda-ui/gdaui-combo.c
@@ -63,7 +63,7 @@ static void gdaui_combo_selector_init (GdauiDataSelectorIface *ifac
static GdaDataModel *combo_selector_get_model (GdauiDataSelector *iface);
static void combo_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
static GArray *combo_selector_get_selected_rows (GdauiDataSelector *iface);
-static GdaDataModelIter *combo_selector_get_current_selection (GdauiDataSelector *iface);
+static GdaDataModelIter *combo_selector_get_data_set (GdauiDataSelector *iface);
static gboolean combo_selector_select_row (GdauiDataSelector *iface, gint row);
static void combo_selector_unselect_row (GdauiDataSelector *iface, gint row);
static void combo_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -140,7 +140,7 @@ gdaui_combo_selector_init (GdauiDataSelectorIface *iface)
iface->get_model = combo_selector_get_model;
iface->set_model = combo_selector_set_model;
iface->get_selected_rows = combo_selector_get_selected_rows;
- iface->get_current_selection = combo_selector_get_current_selection;
+ iface->get_data_set = combo_selector_get_data_set;
iface->select_row = combo_selector_select_row;
iface->unselect_row = combo_selector_unselect_row;
iface->set_column_visible = combo_selector_set_column_visible;
@@ -710,7 +710,7 @@ combo_selector_get_selected_rows (GdauiDataSelector *iface)
}
static GdaDataModelIter *
-combo_selector_get_current_selection (GdauiDataSelector *iface)
+combo_selector_get_data_set (GdauiDataSelector *iface)
{
GdauiCombo *combo;
diff --git a/libgda-ui/gdaui-data-selector.c b/libgda-ui/gdaui-data-selector.c
index 5063d9e..5bfff25 100644
--- a/libgda-ui/gdaui-data-selector.c
+++ b/libgda-ui/gdaui-data-selector.c
@@ -127,6 +127,11 @@ gdaui_data_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model)
*
* Gat an array of selected rows. If no row is selected, the the returned value is %NULL.
*
+ * Please note that rows refers to the "visible" rows
+ * at the time it's being called, which may change if the widget implementing this interface
+ * uses a #GdaDataProxy (as is the case for example for the #GdauiRawForm, #GdauiForm, #GdauiRawGrid
+ * and #GdauiGrid).
+ *
* Returns: an array of #gint values, one for each selected row. Use g_array_free() when
* finished (passing %TRUE as the last argument)
*
@@ -148,6 +153,13 @@ gdaui_data_selector_get_selected_rows (GdauiDataSelector *iface)
* @iface: an object which implements the #GdauiDataSelector interface
* @row: the row to select
*
+ * Force the selection of a specific row.
+ *
+ * Please note that @row refers to the "visible" row
+ * at the time it's being called, which may change if the widget implementing this interface
+ * uses a #GdaDataProxy (as is the case for example for the #GdauiRawForm, #GdauiForm, #GdauiRawGrid
+ * and #GdauiGrid).
+ *
* Returns: %TRUE if the row has been selected
*
* Since: 4.2
@@ -168,6 +180,11 @@ gdaui_data_selector_select_row (GdauiDataSelector *iface, gint row)
* @iface: an object which implements the #GdauiDataSelector interface
* @row: the row to unselect
*
+ * Please note that @row refers to the "visible" row
+ * at the time it's being called, which may change if the widget implementing this interface
+ * uses a #GdaDataProxy (as is the case for example for the #GdauiRawForm, #GdauiForm, #GdauiRawGrid
+ * and #GdauiGrid).
+ *
* Since: 4.2
*/
void
@@ -218,7 +235,7 @@ gdaui_data_selector_get_data_set (GdauiDataSelector *iface)
{
g_return_val_if_fail (GDAUI_IS_DATA_SELECTOR (iface), NULL);
- if (GDAUI_DATA_SELECTOR_GET_IFACE (iface)->get_current_selection)
- return (GDAUI_DATA_SELECTOR_GET_IFACE (iface)->get_current_selection) (iface);
+ if (GDAUI_DATA_SELECTOR_GET_IFACE (iface)->get_data_set)
+ return (GDAUI_DATA_SELECTOR_GET_IFACE (iface)->get_data_set) (iface);
return NULL;
}
diff --git a/libgda-ui/gdaui-data-selector.h b/libgda-ui/gdaui-data-selector.h
index 935d15b..27ebe65 100644
--- a/libgda-ui/gdaui-data-selector.h
+++ b/libgda-ui/gdaui-data-selector.h
@@ -46,7 +46,7 @@ struct _GdauiDataSelectorIface
GdaDataModel *(*get_model) (GdauiDataSelector *iface);
void (*set_model) (GdauiDataSelector *iface, GdaDataModel *model);
GArray *(*get_selected_rows) (GdauiDataSelector *iface);
- GdaDataModelIter *(*get_current_selection) (GdauiDataSelector *iface);
+ GdaDataModelIter *(*get_data_set) (GdauiDataSelector *iface);
gboolean (*select_row) (GdauiDataSelector *iface, gint row);
void (*unselect_row) (GdauiDataSelector *iface, gint row);
void (*set_column_visible) (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -60,7 +60,7 @@ GType gdaui_data_selector_get_type (void) G_GNUC_CONST;
GdaDataModel *gdaui_data_selector_get_model (GdauiDataSelector *iface);
void gdaui_data_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
GArray *gdaui_data_selector_get_selected_rows (GdauiDataSelector *iface);
-GdaDataModelIter *gdaui_data_selector_get_data_set (GdauiDataSelector *iface);
+GdaDataModelIter *gdaui_data_selector_get_data_set (GdauiDataSelector *iface);
gboolean gdaui_data_selector_select_row (GdauiDataSelector *iface, gint row);
void gdaui_data_selector_unselect_row (GdauiDataSelector *iface, gint row);
void gdaui_data_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
diff --git a/libgda-ui/gdaui-form.c b/libgda-ui/gdaui-form.c
index b5a5ef6..da7c50b 100644
--- a/libgda-ui/gdaui-form.c
+++ b/libgda-ui/gdaui-form.c
@@ -54,7 +54,7 @@ static void gdaui_form_selector_init (GdauiDataSelectorIface *iface
static GdaDataModel *gdaui_form_selector_get_model (GdauiDataSelector *iface);
static void gdaui_form_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
static GArray *gdaui_form_selector_get_selected_rows (GdauiDataSelector *iface);
-static GdaDataModelIter *gdaui_form_selector_get_current_selection (GdauiDataSelector *iface);
+static GdaDataModelIter *gdaui_form_selector_get_data_set (GdauiDataSelector *iface);
static gboolean gdaui_form_selector_select_row (GdauiDataSelector *iface, gint row);
static void gdaui_form_selector_unselect_row (GdauiDataSelector *iface, gint row);
static void gdaui_form_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -132,7 +132,7 @@ gdaui_form_selector_init (GdauiDataSelectorIface *iface)
iface->get_model = gdaui_form_selector_get_model;
iface->set_model = gdaui_form_selector_set_model;
iface->get_selected_rows = gdaui_form_selector_get_selected_rows;
- iface->get_current_selection = gdaui_form_selector_get_current_selection;
+ iface->get_data_set = gdaui_form_selector_get_data_set;
iface->select_row = gdaui_form_selector_select_row;
iface->unselect_row = gdaui_form_selector_unselect_row;
iface->set_column_visible = gdaui_form_selector_set_column_visible;
@@ -350,7 +350,7 @@ gdaui_form_selector_get_selected_rows (GdauiDataSelector *iface)
}
static GdaDataModelIter *
-gdaui_form_selector_get_current_selection (GdauiDataSelector *iface)
+gdaui_form_selector_get_data_set (GdauiDataSelector *iface)
{
return gdaui_data_selector_get_data_set ((GdauiDataSelector*) GDAUI_FORM (iface)->priv->raw_form);
}
diff --git a/libgda-ui/gdaui-grid.c b/libgda-ui/gdaui-grid.c
index a3bc072..039c79c 100644
--- a/libgda-ui/gdaui-grid.c
+++ b/libgda-ui/gdaui-grid.c
@@ -54,7 +54,7 @@ static void gdaui_grid_selector_init (GdauiDataSelectorIface *iface
static GdaDataModel *gdaui_grid_selector_get_model (GdauiDataSelector *iface);
static void gdaui_grid_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
static GArray *gdaui_grid_selector_get_selected_rows (GdauiDataSelector *iface);
-static GdaDataModelIter *gdaui_grid_selector_get_current_selection (GdauiDataSelector *iface);
+static GdaDataModelIter *gdaui_grid_selector_get_data_set (GdauiDataSelector *iface);
static gboolean gdaui_grid_selector_select_row (GdauiDataSelector *iface, gint row);
static void gdaui_grid_selector_unselect_row (GdauiDataSelector *iface, gint row);
static void gdaui_grid_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -133,7 +133,7 @@ gdaui_grid_selector_init (GdauiDataSelectorIface *iface)
iface->get_model = gdaui_grid_selector_get_model;
iface->set_model = gdaui_grid_selector_set_model;
iface->get_selected_rows = gdaui_grid_selector_get_selected_rows;
- iface->get_current_selection = gdaui_grid_selector_get_current_selection;
+ iface->get_data_set = gdaui_grid_selector_get_data_set;
iface->select_row = gdaui_grid_selector_select_row;
iface->unselect_row = gdaui_grid_selector_unselect_row;
iface->set_column_visible = gdaui_grid_selector_set_column_visible;
@@ -351,7 +351,7 @@ gdaui_grid_selector_get_selected_rows (GdauiDataSelector *iface)
}
static GdaDataModelIter *
-gdaui_grid_selector_get_current_selection (GdauiDataSelector *iface)
+gdaui_grid_selector_get_data_set (GdauiDataSelector *iface)
{
return gdaui_data_selector_get_data_set ((GdauiDataSelector*) GDAUI_GRID (iface)->priv->raw_grid);
}
diff --git a/libgda-ui/gdaui-raw-form.c b/libgda-ui/gdaui-raw-form.c
index 28a0468..8f764cb 100644
--- a/libgda-ui/gdaui-raw-form.c
+++ b/libgda-ui/gdaui-raw-form.c
@@ -65,7 +65,7 @@ static void gdaui_raw_form_selector_init (GdauiDataSelectorIface *i
static GdaDataModel *gdaui_raw_form_selector_get_model (GdauiDataSelector *iface);
static void gdaui_raw_form_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
static GArray *gdaui_raw_form_selector_get_selected_rows (GdauiDataSelector *iface);
-static GdaDataModelIter *gdaui_raw_form_selector_get_current_selection (GdauiDataSelector *iface);
+static GdaDataModelIter *gdaui_raw_form_selector_get_data_set (GdauiDataSelector *iface);
static gboolean gdaui_raw_form_selector_select_row (GdauiDataSelector *iface, gint row);
static void gdaui_raw_form_selector_unselect_row (GdauiDataSelector *iface, gint row);
static void gdaui_raw_form_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -151,7 +151,7 @@ gdaui_raw_form_selector_init (GdauiDataSelectorIface *iface)
iface->get_model = gdaui_raw_form_selector_get_model;
iface->set_model = gdaui_raw_form_selector_set_model;
iface->get_selected_rows = gdaui_raw_form_selector_get_selected_rows;
- iface->get_current_selection = gdaui_raw_form_selector_get_current_selection;
+ iface->get_data_set = gdaui_raw_form_selector_get_data_set;
iface->select_row = gdaui_raw_form_selector_select_row;
iface->unselect_row = gdaui_raw_form_selector_unselect_row;
iface->set_column_visible = gdaui_raw_form_selector_set_column_visible;
@@ -1055,12 +1055,25 @@ gdaui_raw_form_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model
static GArray *
gdaui_raw_form_selector_get_selected_rows (GdauiDataSelector *iface)
{
- TO_IMPLEMENT;
- return NULL;
+ GdauiRawForm *form;
+
+ g_return_val_if_fail (GDAUI_IS_RAW_FORM (iface), NULL);
+ form = GDAUI_RAW_FORM (iface);
+
+ if (gda_data_model_iter_is_valid (form->priv->iter)) {
+ GArray *array;
+ gint row;
+ array = g_array_new (FALSE, FALSE, sizeof (gint));
+ row = gda_data_model_iter_get_row (form->priv->iter);
+ g_array_append_val (array, row);
+ return array;
+ }
+ else
+ return NULL;
}
static GdaDataModelIter *
-gdaui_raw_form_selector_get_current_selection (GdauiDataSelector *iface)
+gdaui_raw_form_selector_get_data_set (GdauiDataSelector *iface)
{
GdauiRawForm *form;
@@ -1084,7 +1097,7 @@ gdaui_raw_form_selector_select_row (GdauiDataSelector *iface, gint row)
static void
gdaui_raw_form_selector_unselect_row (GdauiDataSelector *iface, gint row)
{
- TO_IMPLEMENT;
+ g_warning ("%s() method not supported\n", __FUNCTION__);
}
static void
diff --git a/libgda-ui/gdaui-raw-grid.c b/libgda-ui/gdaui-raw-grid.c
index c2fd1f2..acb6517 100644
--- a/libgda-ui/gdaui-raw-grid.c
+++ b/libgda-ui/gdaui-raw-grid.c
@@ -71,7 +71,7 @@ static void gdaui_raw_grid_selector_init (GdauiDataSelectorIface *i
static GdaDataModel *gdaui_raw_grid_selector_get_model (GdauiDataSelector *iface);
static void gdaui_raw_grid_selector_set_model (GdauiDataSelector *iface, GdaDataModel *model);
static GArray *gdaui_raw_grid_selector_get_selected_rows (GdauiDataSelector *iface);
-static GdaDataModelIter *gdaui_raw_grid_selector_get_current_selection (GdauiDataSelector *iface);
+static GdaDataModelIter *gdaui_raw_grid_selector_get_data_set (GdauiDataSelector *iface);
static gboolean gdaui_raw_grid_selector_select_row (GdauiDataSelector *iface, gint row);
static void gdaui_raw_grid_selector_unselect_row (GdauiDataSelector *iface, gint row);
static void gdaui_raw_grid_selector_set_column_visible (GdauiDataSelector *iface, gint column, gboolean visible);
@@ -237,7 +237,7 @@ gdaui_raw_grid_selector_init (GdauiDataSelectorIface *iface)
iface->get_model = gdaui_raw_grid_selector_get_model;
iface->set_model = gdaui_raw_grid_selector_set_model;
iface->get_selected_rows = gdaui_raw_grid_selector_get_selected_rows;
- iface->get_current_selection = gdaui_raw_grid_selector_get_current_selection;
+ iface->get_data_set = gdaui_raw_grid_selector_get_data_set;
iface->select_row = gdaui_raw_grid_selector_select_row;
iface->unselect_row = gdaui_raw_grid_selector_unselect_row;
iface->set_column_visible = gdaui_raw_grid_selector_set_column_visible;
@@ -3034,7 +3034,7 @@ gdaui_raw_grid_selector_get_selected_rows (GdauiDataSelector *iface)
}
static GdaDataModelIter *
-gdaui_raw_grid_selector_get_current_selection (GdauiDataSelector *iface)
+gdaui_raw_grid_selector_get_data_set (GdauiDataSelector *iface)
{
GdauiRawGrid *grid;
@@ -3048,18 +3048,41 @@ static gboolean
gdaui_raw_grid_selector_select_row (GdauiDataSelector *iface, gint row)
{
GdauiRawGrid *grid;
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+ gboolean retval = TRUE;
+ GtkTreeIter iter;
g_return_val_if_fail (GDAUI_IS_RAW_GRID (iface), FALSE);
- grid = (GdauiRawGrid*) iface;
+ grid = GDAUI_RAW_GRID (iface);
- TO_IMPLEMENT;
- return FALSE;
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (grid));
+ path = gtk_tree_path_new_from_indices (row, -1);
+ if (gtk_tree_model_get_iter (GTK_TREE_MODEL (grid->priv->store), &iter, path))
+ gtk_tree_selection_select_path (selection, path);
+ else
+ retval = FALSE;
+ gtk_tree_path_free (path);
+
+ return retval;
}
static void
gdaui_raw_grid_selector_unselect_row (GdauiDataSelector *iface, gint row)
{
- TO_IMPLEMENT;
+ GdauiRawGrid *grid;
+ GtkTreeSelection *selection;
+ GtkTreePath *path;
+ GtkTreeIter iter;
+
+ g_return_if_fail (GDAUI_IS_RAW_GRID (iface));
+ grid = GDAUI_RAW_GRID (iface);
+
+ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (grid));
+ path = gtk_tree_path_new_from_indices (row, -1);
+ if (gtk_tree_model_get_iter (GTK_TREE_MODEL (grid->priv->store), &iter, path))
+ gtk_tree_selection_unselect_path (selection, path);
+ gtk_tree_path_free (path);
}
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]