[libgda] 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] Honor the GdauiDataSelector::selection-changed signal for GdauiForm and GdauiGrid
- Date: Tue, 18 Oct 2011 19:33:29 +0000 (UTC)
commit 921da1a5be87bb56df4910538aee13e26ed85e67
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 df1e460..a30b1ea 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);
@@ -193,6 +201,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 |
@@ -202,6 +212,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 260330c..da8b931 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;
@@ -189,6 +197,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);
@@ -196,6 +206,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]