[libgda/LIBGDA_4.2] Honor the GdauiDataSelector::selection-changed signal for GdauiForm and GdauiGrid
- From: Vivien Malerba <vivien src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libgda/LIBGDA_4.2] Honor the GdauiDataSelector::selection-changed signal for GdauiForm and GdauiGrid
- Date: Wed, 19 Oct 2011 06:14:39 +0000 (UTC)
commit 8db0d6e0c6cdf081b129e5e9df49e5cd8c28c021
Author: Vivien Malerba <malerba gnome-db org>
Date: Tue Oct 18 21:09:52 2011 +0200
Honor the GdauiDataSelector::selection-changed signal for GdauiForm and GdauiGrid
libgda-ui/gdaui-form.c | 34 ++++++++++++++++++++++++++++++++++
libgda-ui/gdaui-grid.c | 31 +++++++++++++++++++++++++++++++
2 files changed, 65 insertions(+), 0 deletions(-)
---
diff --git a/libgda-ui/gdaui-form.c b/libgda-ui/gdaui-form.c
index 9bd6d7e..26c675b 100644
--- a/libgda-ui/gdaui-form.c
+++ b/libgda-ui/gdaui-form.c
@@ -30,6 +30,7 @@
static void gdaui_form_class_init (GdauiFormClass * class);
static void gdaui_form_init (GdauiForm *wid);
+static void gdaui_form_dispose (GObject *object);
static void gdaui_form_set_property (GObject *object,
guint param_id,
@@ -145,6 +146,7 @@ gdaui_form_class_init (GdauiFormClass *class)
GObjectClass *object_class = G_OBJECT_CLASS (class);
parent_class = g_type_class_peek_parent (class);
+ object_class->dispose = gdaui_form_dispose;
/* Properties */
@@ -180,6 +182,12 @@ form_layout_changed_cb (G_GNUC_UNUSED GdauiBasicForm *raw_form, GdauiForm *form)
}
static void
+form_selection_changed_cb (G_GNUC_UNUSED GdauiRawForm *rawform, GdauiForm *form)
+{
+ g_signal_emit_by_name (G_OBJECT (form), "selection-changed");
+}
+
+static void
gdaui_form_init (GdauiForm *form)
{
form->priv = g_new0 (GdauiFormPriv, 1);
@@ -191,6 +199,8 @@ gdaui_form_init (GdauiForm *form)
gtk_widget_show (form->priv->raw_form);
g_signal_connect (form->priv->raw_form, "layout-changed",
G_CALLBACK (form_layout_changed_cb), form);
+ g_signal_connect (form->priv->raw_form, "selection-changed",
+ G_CALLBACK (form_selection_changed_cb), form);
form->priv->info = gdaui_data_proxy_info_new (GDAUI_DATA_PROXY (form->priv->raw_form),
GDAUI_DATA_PROXY_INFO_CURRENT_ROW |
@@ -200,6 +210,30 @@ gdaui_form_init (GdauiForm *form)
}
+static void
+gdaui_form_dispose (GObject *object)
+{
+ GdauiForm *form;
+
+ g_return_if_fail (GDAUI_IS_FORM (object));
+ form = GDAUI_FORM (object);
+
+ if (form->priv) {
+ g_signal_handlers_disconnect_by_func (form->priv->raw_form,
+ G_CALLBACK (form_layout_changed_cb), form);
+ g_signal_handlers_disconnect_by_func (form->priv->raw_form,
+ G_CALLBACK (form_selection_changed_cb), form);
+
+ /* the private area itself */
+ g_free (form->priv);
+ form->priv = NULL;
+ }
+
+ /* for the parent class */
+ parent_class->dispose (object);
+}
+
+
/**
* gdaui_form_new:
* @model: a #GdaDataModel
diff --git a/libgda-ui/gdaui-grid.c b/libgda-ui/gdaui-grid.c
index 4638073..0afa3e7 100644
--- a/libgda-ui/gdaui-grid.c
+++ b/libgda-ui/gdaui-grid.c
@@ -30,6 +30,7 @@
static void gdaui_grid_class_init (GdauiGridClass * class);
static void gdaui_grid_init (GdauiGrid *wid);
+static void gdaui_grid_dispose (GObject *object);
static void gdaui_grid_set_property (GObject *object,
guint param_id,
@@ -146,6 +147,7 @@ gdaui_grid_class_init (GdauiGridClass *class)
GObjectClass *object_class = G_OBJECT_CLASS (class);
parent_class = g_type_class_peek_parent (class);
+ object_class->dispose = gdaui_grid_dispose;
/* Properties */
object_class->set_property = gdaui_grid_set_property;
@@ -170,6 +172,12 @@ gdaui_grid_class_init (GdauiGridClass *class)
}
static void
+raw_grid_selection_changed_cb (G_GNUC_UNUSED GdauiRawGrid *rawgrid, GdauiGrid *grid)
+{
+ g_signal_emit_by_name (G_OBJECT (grid), "selection-changed");
+}
+
+static void
gdaui_grid_init (GdauiGrid *grid)
{
GtkWidget *sw;
@@ -187,6 +195,8 @@ gdaui_grid_init (GdauiGrid *grid)
grid->priv->raw_grid = gdaui_raw_grid_new (NULL);
gtk_container_add (GTK_CONTAINER (sw), grid->priv->raw_grid);
gtk_widget_show (grid->priv->raw_grid);
+ g_signal_connect (grid->priv->raw_grid, "selection-changed",
+ G_CALLBACK (raw_grid_selection_changed_cb), grid);
grid->priv->info = gdaui_data_proxy_info_new (GDAUI_DATA_PROXY (grid->priv->raw_grid),
GDAUI_DATA_PROXY_INFO_CURRENT_ROW);
@@ -194,6 +204,27 @@ gdaui_grid_init (GdauiGrid *grid)
gtk_widget_show (grid->priv->info);
}
+static void
+gdaui_grid_dispose (GObject *object)
+{
+ GdauiGrid *grid;
+
+ g_return_if_fail (GDAUI_IS_GRID (object));
+ grid = GDAUI_GRID (object);
+
+ if (grid->priv) {
+ g_signal_handlers_disconnect_by_func (grid->priv->raw_grid,
+ G_CALLBACK (raw_grid_selection_changed_cb), grid);
+
+ /* the private area itself */
+ g_free (grid->priv);
+ grid->priv = NULL;
+ }
+
+ /* for the parent class */
+ parent_class->dispose (object);
+}
+
/**
* gdaui_grid_new:
* @model: a #GdaDataModel
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]