[libgda] GdauiBasicForm: handle data entries changing their expanding requirements



commit 1f21044004a6155345850cc60691c2af30add0e5
Author: Vivien Malerba <malerba gnome-db org>
Date:   Fri Jul 16 22:09:30 2010 +0200

    GdauiBasicForm: handle data entries changing their expanding requirements

 libgda-ui/data-entries/gdaui-entry-string.c |    3 ++-
 libgda-ui/gdaui-basic-form.c                |   16 +++++++++++++++-
 libgda-ui/gdaui-data-entry.c                |   13 +++++++++++--
 libgda-ui/gdaui-data-entry.h                |    6 ++++--
 4 files changed, 32 insertions(+), 6 deletions(-)
---
diff --git a/libgda-ui/data-entries/gdaui-entry-string.c b/libgda-ui/data-entries/gdaui-entry-string.c
index eaf27cb..46aef3d 100644
--- a/libgda-ui/data-entries/gdaui-entry-string.c
+++ b/libgda-ui/data-entries/gdaui-entry-string.c
@@ -1,6 +1,6 @@
 /* gdaui-entry-string.c
  *
- * Copyright (C) 2003 - 2008 Vivien Malerba
+ * Copyright (C) 2003 - 2010 Vivien Malerba
  *
  * This Library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public License as
@@ -285,6 +285,7 @@ gdaui_entry_string_set_property (GObject *object,
 					gtk_widget_show (mgstr->priv->entry);
 					gtk_widget_hide (mgstr->priv->sw);
 				}
+				g_signal_emit_by_name (object, "expand-changed");
 			}
 			break;
 		case PROP_OPTIONS:
diff --git a/libgda-ui/gdaui-basic-form.c b/libgda-ui/gdaui-basic-form.c
index 57bda2e..2fd20dd 100644
--- a/libgda-ui/gdaui-basic-form.c
+++ b/libgda-ui/gdaui-basic-form.c
@@ -74,6 +74,7 @@ typedef struct {
 	gulong          label_shown_id; /* signal ID */
 
 	gulong          entry_contents_modified_id; /* signal ID */
+	gulong          entry_expand_changed_id; /* signal ID */
 	gulong          entry_contents_activated_id; /* signal ID */
 
 	GdaHolder      *single_param;
@@ -108,6 +109,7 @@ static void paramlist_param_attr_changed_cb (GdaSet *paramlist, GdaHolder *param
 					     const gchar *att_name, const GValue *att_value, GdauiBasicForm *form);
 
 static void entry_contents_modified (GdauiDataEntry *entry, SingleEntry *sentry);
+static void entry_expand_changed_cb (GdauiDataEntry *entry, SingleEntry *sentry);
 static void entry_contents_activated (GdauiDataEntry *entry, GdauiBasicForm *form);
 static void parameter_changed_cb (GdaHolder *param, SingleEntry *sentry);
 
@@ -568,9 +570,12 @@ gdaui_basic_form_get_property (GObject *object,
 static void
 disconnect_single_entry_signals (SingleEntry *sentry)
 {
-	if (sentry->entry)
+	if (sentry->entry) {
 		g_signal_handler_disconnect (sentry->entry, sentry->entry_contents_modified_id);
+		g_signal_handler_disconnect (sentry->entry, sentry->entry_expand_changed_id);
+	}
 	sentry->entry_contents_modified_id = 0;
+	sentry->entry_expand_changed_id = 0;
 	if (sentry->entry)
 		g_signal_handler_disconnect (sentry->entry, sentry->entry_contents_activated_id);
 	sentry->entry_contents_activated_id = 0;
@@ -862,6 +867,9 @@ create_entry_widget (SingleEntry *sentry)
 	sentry->entry_contents_modified_id = g_signal_connect (G_OBJECT (entry), "contents-modified",
 							       G_CALLBACK (entry_contents_modified),
 							       sentry);
+	sentry->entry_expand_changed_id = g_signal_connect (sentry->entry, "expand-changed",
+							    G_CALLBACK (entry_expand_changed_cb), sentry);
+
 	sentry->entry_contents_activated_id = g_signal_connect (G_OBJECT (entry), "contents-activated",
 								G_CALLBACK (entry_contents_activated),
 								sentry->form);
@@ -1336,6 +1344,12 @@ entry_contents_modified (GdauiDataEntry *entry, SingleEntry *sentry)
 	}
 }
 
+static void
+entry_expand_changed_cb (GdauiDataEntry *entry, SingleEntry *sentry)
+{
+	pack_entry_widget (sentry);
+}
+
 
 /*
  * Called when a parameter changes
diff --git a/libgda-ui/gdaui-data-entry.c b/libgda-ui/gdaui-data-entry.c
index 5899011..608a124 100644
--- a/libgda-ui/gdaui-data-entry.c
+++ b/libgda-ui/gdaui-data-entry.c
@@ -1,6 +1,6 @@
 /* gdaui-data-entry.c
  *
- * Copyright (C) 2003 - 2009 Vivien Malerba
+ * Copyright (C) 2003 - 2010 Vivien Malerba
  *
  * This Library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public License as
@@ -27,10 +27,11 @@ enum {
 	CONTENTS_ACTIVATED,
 	STATUS_CHANGED,
 	CONTENTS_VALID,
+	EXPAND_CHANGED,
 	LAST_SIGNAL
 };
 
-static gint gdaui_data_entry_signals[LAST_SIGNAL] = { 0, 0, 0, 0 };
+static gint gdaui_data_entry_signals[LAST_SIGNAL] = { 0, 0, 0, 0, 0 };
 static void gdaui_data_entry_iface_init (gpointer g_class);
 
 GType
@@ -114,6 +115,14 @@ gdaui_data_entry_iface_init (gpointer g_class)
 				      contents_valid_accumulator, NULL,
 				      _gdaui_marshal_BOOLEAN__POINTER,
 				      G_TYPE_BOOLEAN, 1, G_TYPE_POINTER);
+		gdaui_data_entry_signals[EXPAND_CHANGED] =
+			g_signal_new ("expand-changed",
+				      GDAUI_TYPE_DATA_ENTRY,
+				      G_SIGNAL_RUN_FIRST,
+				      G_STRUCT_OFFSET (GdauiDataEntryIface, expand_changed),
+				      NULL, NULL,
+				      _gdaui_marshal_VOID__VOID,
+				      G_TYPE_NONE, 0);
 
 		((GdauiDataEntryIface*) g_class)->contents_valid = m_class_contents_valid;
 		initialized = TRUE;
diff --git a/libgda-ui/gdaui-data-entry.h b/libgda-ui/gdaui-data-entry.h
index e3bec67..18a173d 100644
--- a/libgda-ui/gdaui-data-entry.h
+++ b/libgda-ui/gdaui-data-entry.h
@@ -1,6 +1,6 @@
 /* gdaui-data-entry.h
  *
- * Copyright (C) 2009 Vivien Malerba
+ * Copyright (C) 2009 - 2010 Vivien Malerba
  *
  * This Library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Library General Public License as
@@ -63,9 +63,11 @@ struct _GdauiDataEntryIface
 	gboolean        (*get_editable)          (GdauiDataEntry *de);
 	void            (*grab_focus)            (GdauiDataEntry *de);
 
+	/* another signal */
+	void            (* expand_changed)       (GdauiDataEntry *de);
+
 	/*< private >*/
 	/* Padding for future expansion */
-        void (*_gdaui_reserved1) (void);
         void (*_gdaui_reserved2) (void);
         void (*_gdaui_reserved3) (void);
         void (*_gdaui_reserved4) (void);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]