[glade3] * gladeui/glade-signal.[ch], gladeui/glade-project.c, gladeui/glade-widget.c, gladeui/glade-signal
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glade3] * gladeui/glade-signal.[ch], gladeui/glade-project.c, gladeui/glade-widget.c, gladeui/glade-signal
- Date: Wed, 5 Jan 2011 07:41:03 +0000 (UTC)
commit cd730730034ce1cf5de74d3636a8a3687f3ecc0d
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date: Wed Jan 5 16:47:49 2011 +0900
* gladeui/glade-signal.[ch], gladeui/glade-project.c, gladeui/glade-widget.c,
gladeui/glade-signal-editor.c, gladeui/glade-command.c: Made GladeSignal an
opaque structure with accessors.
ChangeLog | 4 +
gladeui/glade-command.c | 3 +-
gladeui/glade-project.c | 8 ++-
gladeui/glade-signal-class.c | 2 +-
gladeui/glade-signal-editor.c | 89 +++++++++++++++--------------
gladeui/glade-signal.c | 128 ++++++++++++++++++++++++++++++++++++++++-
gladeui/glade-signal.h | 64 ++++++++++----------
gladeui/glade-widget.c | 41 ++++++--------
8 files changed, 232 insertions(+), 107 deletions(-)
---
diff --git a/ChangeLog b/ChangeLog
index 408c3fb..4cb23d2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,10 @@
Added glade-signal-class.[ch] as an opaque type.
+ * gladeui/glade-signal.[ch], gladeui/glade-project.c, gladeui/glade-widget.c,
+ gladeui/glade-signal-editor.c, gladeui/glade-command.c: Made GladeSignal an
+ opaque structure with accessors.
+
2011-01-04 Johannes Schmid <jhs gnome org>
* data/gladeui-2.0.pc.in: Fix include paths and library name
diff --git a/gladeui/glade-command.c b/gladeui/glade-command.c
index 2dfa293..1269fb6 100644
--- a/gladeui/glade-command.c
+++ b/gladeui/glade-command.c
@@ -1861,7 +1861,8 @@ glade_command_add_remove_change_signal (GladeWidget * glade_widget,
cmd->description =
g_strdup_printf (type == GLADE_ADD ? _("Add signal handler %s") :
type == GLADE_REMOVE ? _("Remove signal handler %s") :
- _("Change signal handler %s"), signal->handler);
+ _("Change signal handler %s"),
+ glade_signal_get_handler ((GladeSignal *)signal));
glade_command_check_group (GLADE_COMMAND (me));
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c
index d9dc42e..ca035b6 100644
--- a/gladeui/glade-project.c
+++ b/gladeui/glade-project.c
@@ -1393,7 +1393,8 @@ glade_project_introspect_signal_versions (GladeSignal *signal,
gboolean is_gtk_adaptor = FALSE;
signal_class =
- glade_widget_adaptor_get_signal_class (glade_widget_get_adaptor (data->widget), signal->name);
+ glade_widget_adaptor_get_signal_class (glade_widget_get_adaptor (data->widget),
+ glade_signal_get_name (signal));
/* unknown signal... can it happen ? */
if (!signal_class)
@@ -2252,7 +2253,8 @@ glade_project_verify_signal_internal (GladeWidget * widget,
gchar *catalog;
signal_class =
- glade_widget_adaptor_get_signal_class (glade_widget_get_adaptor (widget), signal->name);
+ glade_widget_adaptor_get_signal_class (glade_widget_get_adaptor (widget),
+ glade_signal_get_name (signal));
if (!signal_class)
return;
@@ -2282,7 +2284,7 @@ glade_project_verify_signal_internal (GladeWidget * widget,
g_string_append_printf (string,
SIGNAL_VERSION_CONFLICT_FMT,
path_name,
- signal->name,
+ glade_signal_get_name (signal),
glade_widget_adaptor_get_title (adaptor),
catalog,
glade_signal_class_since_major (signal_class),
diff --git a/gladeui/glade-signal-class.c b/gladeui/glade-signal-class.c
index 5c3e011..895fc67 100644
--- a/gladeui/glade-signal-class.c
+++ b/gladeui/glade-signal-class.c
@@ -55,7 +55,7 @@ glade_signal_class_new (GladeWidgetAdaptor *adaptor,
* exist no matter what.
*/
g_signal_query (signal_id, &(class->query));
- if (class->query.signal_id != 0)
+ if (class->query.signal_id == 0)
{
g_critical ("glade_signal_class_new() called with an invalid signal id");
diff --git a/gladeui/glade-signal-editor.c b/gladeui/glade-signal-editor.c
index 3a1f47e..17ee9a2 100644
--- a/gladeui/glade-signal-editor.c
+++ b/gladeui/glade-signal-editor.c
@@ -244,7 +244,8 @@ append_slot (GladeSignalEditor * self, GtkTreeIter * iter_signal,
GSE_COLUMN_USERDATA_SLOT, TRUE,
GSE_COLUMN_CONTENT, TRUE,
GSE_COLUMN_WARN, FALSE,
- GSE_COLUMN_TOOLTIP, sig->support_warning, -1);
+ GSE_COLUMN_TOOLTIP, glade_signal_get_support_warning (sig),
+ -1);
gtk_tree_model_iter_parent (model, &iter_class, iter_signal);
/* mark the signal & class name as bold */
@@ -1251,8 +1252,8 @@ glade_signal_editor_load_widget (GladeSignalEditor * editor,
GSE_COLUMN_SLOT, TRUE,
GSE_COLUMN_USERDATA_SLOT, TRUE,
GSE_COLUMN_CONTENT, TRUE,
- GSE_COLUMN_WARN, sig->support_warning != NULL,
- GSE_COLUMN_TOOLTIP, sig->support_warning, -1);
+ GSE_COLUMN_WARN, glade_signal_get_support_warning (sig) != NULL,
+ GSE_COLUMN_TOOLTIP, glade_signal_get_support_warning (sig), -1);
}
else
{
@@ -1273,51 +1274,53 @@ glade_signal_editor_load_widget (GladeSignalEditor * editor,
gtk_tree_path_free (path_parent_class);
gtk_tree_store_set
- (priv->model, &parent_signal,
- GSE_COLUMN_SIGNAL, glade_signal_class_get_name (signal),
- GSE_COLUMN_HANDLER, widget_signal->handler,
- GSE_COLUMN_AFTER, widget_signal->after,
- GSE_COLUMN_USERDATA,
- widget_signal->userdata ?
- widget_signal->userdata : USERDATA_DEFAULT,
- GSE_COLUMN_SWAPPED, widget_signal->swapped,
- GSE_COLUMN_SWAPPED_VISIBLE,
- widget_signal->userdata ? TRUE : FALSE,
- GSE_COLUMN_AFTER_VISIBLE, TRUE,
- GSE_COLUMN_HANDLER_EDITABLE, TRUE,
- GSE_COLUMN_USERDATA_EDITABLE, TRUE,
- GSE_COLUMN_SLOT, FALSE,
- GSE_COLUMN_USERDATA_SLOT,
- widget_signal->userdata ? FALSE : TRUE,
- GSE_COLUMN_BOLD, TRUE,
- GSE_COLUMN_CONTENT, TRUE,
- GSE_COLUMN_WARN, widget_signal->support_warning != NULL,
- GSE_COLUMN_TOOLTIP, widget_signal->support_warning, -1);
-
+ (priv->model, &parent_signal,
+ GSE_COLUMN_SIGNAL, glade_signal_class_get_name (signal),
+ GSE_COLUMN_HANDLER, glade_signal_get_handler (widget_signal),
+ GSE_COLUMN_AFTER, glade_signal_get_after (widget_signal),
+ GSE_COLUMN_USERDATA,
+ glade_signal_get_userdata (widget_signal) ?
+ glade_signal_get_userdata (widget_signal) : USERDATA_DEFAULT,
+ GSE_COLUMN_SWAPPED, glade_signal_get_swapped (widget_signal),
+ GSE_COLUMN_SWAPPED_VISIBLE,
+ glade_signal_get_userdata (widget_signal) ? TRUE : FALSE,
+ GSE_COLUMN_AFTER_VISIBLE, TRUE,
+ GSE_COLUMN_HANDLER_EDITABLE, TRUE,
+ GSE_COLUMN_USERDATA_EDITABLE, TRUE,
+ GSE_COLUMN_SLOT, FALSE,
+ GSE_COLUMN_USERDATA_SLOT,
+ glade_signal_get_userdata (widget_signal) ? FALSE : TRUE,
+ GSE_COLUMN_BOLD, TRUE,
+ GSE_COLUMN_CONTENT, TRUE,
+ GSE_COLUMN_WARN, glade_signal_get_support_warning (widget_signal) != NULL,
+ GSE_COLUMN_TOOLTIP, glade_signal_get_support_warning (widget_signal),
+ -1);
+
for (i = 1; i < signals->len; i++)
{
widget_signal = (GladeSignal *) g_ptr_array_index (signals, i);
gtk_tree_store_append (priv->model, &iter, &parent_signal);
gtk_tree_store_set
- (priv->model, &iter,
- GSE_COLUMN_HANDLER, widget_signal->handler,
- GSE_COLUMN_AFTER, widget_signal->after,
- GSE_COLUMN_USERDATA,
- widget_signal->userdata ?
- widget_signal->userdata : USERDATA_DEFAULT,
- GSE_COLUMN_SWAPPED, widget_signal->swapped,
- GSE_COLUMN_SWAPPED_VISIBLE,
- widget_signal->userdata ? TRUE : FALSE,
- GSE_COLUMN_AFTER_VISIBLE, TRUE,
- GSE_COLUMN_HANDLER_EDITABLE, TRUE,
- GSE_COLUMN_USERDATA_EDITABLE, TRUE,
- GSE_COLUMN_SLOT, FALSE,
- GSE_COLUMN_USERDATA_SLOT,
- widget_signal->userdata ? FALSE : TRUE,
- GSE_COLUMN_CONTENT, TRUE,
- GSE_COLUMN_WARN, FALSE,
- GSE_COLUMN_TOOLTIP, widget_signal->support_warning, -1);
+ (priv->model, &iter,
+ GSE_COLUMN_HANDLER, glade_signal_get_handler (widget_signal),
+ GSE_COLUMN_AFTER, glade_signal_get_after (widget_signal),
+ GSE_COLUMN_USERDATA,
+ glade_signal_get_userdata (widget_signal) ?
+ glade_signal_get_userdata (widget_signal) : USERDATA_DEFAULT,
+ GSE_COLUMN_SWAPPED, glade_signal_get_swapped (widget_signal),
+ GSE_COLUMN_SWAPPED_VISIBLE,
+ glade_signal_get_userdata (widget_signal) ? TRUE : FALSE,
+ GSE_COLUMN_AFTER_VISIBLE, TRUE,
+ GSE_COLUMN_HANDLER_EDITABLE, TRUE,
+ GSE_COLUMN_USERDATA_EDITABLE, TRUE,
+ GSE_COLUMN_SLOT, FALSE,
+ GSE_COLUMN_USERDATA_SLOT,
+ glade_signal_get_userdata (widget_signal) ? FALSE : TRUE,
+ GSE_COLUMN_CONTENT, TRUE,
+ GSE_COLUMN_WARN, FALSE,
+ GSE_COLUMN_TOOLTIP, glade_signal_get_support_warning (widget_signal),
+ -1);
}
/* add the <Type...> slot */
@@ -1336,7 +1339,7 @@ glade_signal_editor_load_widget (GladeSignalEditor * editor,
GSE_COLUMN_USERDATA_SLOT, TRUE,
GSE_COLUMN_CONTENT, TRUE,
GSE_COLUMN_WARN, FALSE,
- GSE_COLUMN_TOOLTIP, sig->support_warning, -1);
+ GSE_COLUMN_TOOLTIP, glade_signal_get_support_warning (sig), -1);
}
glade_signal_free (sig);
diff --git a/gladeui/glade-signal.c b/gladeui/glade-signal.c
index ea0009f..79820be 100644
--- a/gladeui/glade-signal.c
+++ b/gladeui/glade-signal.c
@@ -30,6 +30,18 @@
#include "glade-signal.h"
#include "glade-xml-utils.h"
+struct _GladeSignal
+{
+ gchar *name; /* Signal name eg "clicked" */
+ gchar *handler; /* Handler function eg "gtk_main_quit" */
+ gchar *userdata; /* User data signal handler argument */
+
+ gchar *support_warning;/* Message to inform the user about signals introduced in future versions */
+
+ guint8 after : 1; /* Connect after TRUE or FALSE */
+ guint8 swapped : 1; /* Connect swapped TRUE or FALSE (GtkBuilder only) */
+};
+
/**
* glade_signal_new:
* @name: a name for the signal
@@ -118,7 +130,9 @@ glade_signal_clone (const GladeSignal * signal)
dup = glade_signal_new (signal->name,
signal->handler,
- signal->userdata, signal->after, signal->swapped);
+ signal->userdata,
+ signal->after,
+ signal->swapped);
glade_signal_set_support_warning (dup, signal->support_warning);
@@ -222,8 +236,108 @@ glade_signal_read (GladeXmlNode * node)
}
void
-glade_signal_set_support_warning (GladeSignal * signal,
- const gchar * support_warning)
+glade_signal_set_name (GladeSignal *signal,
+ const gchar *name)
+{
+ g_return_if_fail (GLADE_IS_SIGNAL (signal));
+
+ if (g_strcmp0 (signal->name, name))
+ {
+ g_free (signal->name);
+ signal->name =
+ name ? g_strdup (name) : NULL;
+ }
+}
+
+G_CONST_RETURN gchar *
+glade_signal_get_name (GladeSignal *signal)
+{
+ g_return_val_if_fail (GLADE_IS_SIGNAL (signal), NULL);
+
+ return signal->name;
+}
+
+void
+glade_signal_set_handler (GladeSignal *signal,
+ const gchar *handler)
+{
+ g_return_if_fail (GLADE_IS_SIGNAL (signal));
+
+ if (g_strcmp0 (signal->handler, handler))
+ {
+ g_free (signal->handler);
+ signal->handler =
+ handler ? g_strdup (handler) : NULL;
+ }
+}
+
+G_CONST_RETURN gchar *
+glade_signal_get_handler (GladeSignal *signal)
+{
+ g_return_val_if_fail (GLADE_IS_SIGNAL (signal), NULL);
+
+ return signal->handler;
+}
+
+void
+glade_signal_set_userdata (GladeSignal *signal,
+ const gchar *userdata)
+{
+ g_return_if_fail (GLADE_IS_SIGNAL (signal));
+
+ if (g_strcmp0 (signal->userdata, userdata))
+ {
+ g_free (signal->userdata);
+ signal->userdata =
+ userdata ? g_strdup (userdata) : NULL;
+ }
+}
+
+G_CONST_RETURN gchar *
+glade_signal_get_userdata (GladeSignal *signal)
+{
+ g_return_val_if_fail (GLADE_IS_SIGNAL (signal), NULL);
+
+ return signal->userdata;
+}
+
+void
+glade_signal_set_after (GladeSignal *signal,
+ gboolean after)
+{
+ g_return_if_fail (GLADE_IS_SIGNAL (signal));
+
+ signal->after = after;
+}
+
+gboolean
+glade_signal_get_after (GladeSignal *signal)
+{
+ g_return_val_if_fail (GLADE_IS_SIGNAL (signal), FALSE);
+
+ return signal->after;
+}
+
+void
+glade_signal_set_swapped (GladeSignal *signal,
+ gboolean swapped)
+{
+ g_return_if_fail (GLADE_IS_SIGNAL (signal));
+
+ signal->swapped = swapped;
+}
+
+gboolean
+glade_signal_get_swapped (GladeSignal *signal)
+{
+ g_return_val_if_fail (GLADE_IS_SIGNAL (signal), FALSE);
+
+ return signal->swapped;
+}
+
+void
+glade_signal_set_support_warning (GladeSignal *signal,
+ const gchar *support_warning)
{
g_return_if_fail (GLADE_IS_SIGNAL (signal));
@@ -234,3 +348,11 @@ glade_signal_set_support_warning (GladeSignal * signal,
support_warning ? g_strdup (support_warning) : NULL;
}
}
+
+G_CONST_RETURN gchar *
+glade_signal_get_support_warning (GladeSignal *signal)
+{
+ g_return_val_if_fail (GLADE_IS_SIGNAL (signal), NULL);
+
+ return signal->support_warning;
+}
diff --git a/gladeui/glade-signal.h b/gladeui/glade-signal.h
index 485c5af..9296e67 100644
--- a/gladeui/glade-signal.h
+++ b/gladeui/glade-signal.h
@@ -5,43 +5,43 @@
G_BEGIN_DECLS
-
#define GLADE_SIGNAL(s) ((GladeSignal *)s)
#define GLADE_IS_SIGNAL(s) (s != NULL)
typedef struct _GladeSignal GladeSignal;
-struct _GladeSignal
-{
- gchar *name; /* Signal name eg "clicked" */
- gchar *handler; /* Handler function eg "gtk_main_quit" */
- gchar *userdata; /* User data signal handler argument */
-
- gchar *support_warning;/* Message to inform the user about signals introduced in future versions */
-
- guint8 after : 1; /* Connect after TRUE or FALSE */
- guint8 swapped : 1; /* Connect swapped TRUE or FALSE (GtkBuilder only) */
-};
-
-
-GladeSignal *glade_signal_new (const gchar *name,
- const gchar *handler,
- const gchar *userdata,
- gboolean after,
- gboolean swapped);
-
-GladeSignal *glade_signal_clone (const GladeSignal *signal);
-void glade_signal_free (GladeSignal *signal);
-
-gboolean glade_signal_equal (GladeSignal *sig1, GladeSignal *sig2);
-
-GladeSignal *glade_signal_read (GladeXmlNode *node);
-void glade_signal_write (GladeSignal *signal,
- GladeXmlContext *context,
- GladeXmlNode *node);
-
-void glade_signal_set_support_warning (GladeSignal *signal,
- const gchar *support_warning);
+GladeSignal *glade_signal_new (const gchar *name,
+ const gchar *handler,
+ const gchar *userdata,
+ gboolean after,
+ gboolean swapped);
+GladeSignal *glade_signal_clone (const GladeSignal *signal);
+void glade_signal_free (GladeSignal *signal);
+gboolean glade_signal_equal (GladeSignal *sig1,
+ GladeSignal *sig2);
+GladeSignal *glade_signal_read (GladeXmlNode *node);
+void glade_signal_write (GladeSignal *signal,
+ GladeXmlContext *context,
+ GladeXmlNode *node);
+
+void glade_signal_set_name (GladeSignal *signal,
+ const gchar *name);
+G_CONST_RETURN gchar *glade_signal_get_name (GladeSignal *signal);
+void glade_signal_set_handler (GladeSignal *signal,
+ const gchar *handler);
+G_CONST_RETURN gchar *glade_signal_get_handler (GladeSignal *signal);
+void glade_signal_set_userdata (GladeSignal *signal,
+ const gchar *userdata);
+G_CONST_RETURN gchar *glade_signal_get_userdata (GladeSignal *signal);
+void glade_signal_set_after (GladeSignal *signal,
+ gboolean after);
+gboolean glade_signal_get_after (GladeSignal *signal);
+void glade_signal_set_swapped (GladeSignal *signal,
+ gboolean swapped);
+gboolean glade_signal_get_swapped (GladeSignal *signal);
+void glade_signal_set_support_warning (GladeSignal *signal,
+ const gchar *support_warning);
+G_CONST_RETURN gchar *glade_signal_get_support_warning (GladeSignal *signal);
G_END_DECLS
diff --git a/gladeui/glade-widget.c b/gladeui/glade-widget.c
index f894a2b..de4a695 100644
--- a/gladeui/glade-widget.c
+++ b/gladeui/glade-widget.c
@@ -313,11 +313,12 @@ glade_widget_add_signal_handler_impl (GladeWidget * widget,
g_return_if_fail (GLADE_IS_WIDGET (widget));
g_return_if_fail (GLADE_IS_SIGNAL (signal_handler));
- signals = glade_widget_list_signal_handlers (widget, signal_handler->name);
+ signals = glade_widget_list_signal_handlers (widget, glade_signal_get_name (signal_handler));
if (!signals)
{
signals = g_ptr_array_new ();
- g_hash_table_insert (widget->priv->signals, g_strdup (signal_handler->name),
+ g_hash_table_insert (widget->priv->signals,
+ g_strdup (glade_signal_get_name (signal_handler)),
signals);
}
@@ -338,7 +339,7 @@ glade_widget_remove_signal_handler_impl (GladeWidget * widget,
g_return_if_fail (GLADE_IS_WIDGET (widget));
g_return_if_fail (GLADE_IS_SIGNAL (signal_handler));
- signals = glade_widget_list_signal_handlers (widget, signal_handler->name);
+ signals = glade_widget_list_signal_handlers (widget, glade_signal_get_name (signal_handler));
/* trying to remove an inexistent signal? */
g_assert (signals);
@@ -367,11 +368,11 @@ glade_widget_change_signal_handler_impl (GladeWidget * widget,
g_return_if_fail (GLADE_IS_WIDGET (widget));
g_return_if_fail (GLADE_IS_SIGNAL (old_signal_handler));
g_return_if_fail (GLADE_IS_SIGNAL (new_signal_handler));
- g_return_if_fail (strcmp (old_signal_handler->name, new_signal_handler->name)
- == 0);
+ g_return_if_fail (strcmp (glade_signal_get_name (old_signal_handler),
+ glade_signal_get_name (new_signal_handler)) == 0);
signals =
- glade_widget_list_signal_handlers (widget, old_signal_handler->name);
+ glade_widget_list_signal_handlers (widget, glade_signal_get_name (old_signal_handler));
/* trying to remove an inexistent signal? */
g_assert (signals);
@@ -381,27 +382,19 @@ glade_widget_change_signal_handler_impl (GladeWidget * widget,
signal_handler_iter = g_ptr_array_index (signals, i);
if (glade_signal_equal (signal_handler_iter, old_signal_handler))
{
- if (strcmp (old_signal_handler->handler,
- new_signal_handler->handler) != 0)
- {
- g_free (signal_handler_iter->handler);
- signal_handler_iter->handler =
- g_strdup (new_signal_handler->handler);
- }
-
/* Handler */
- if (signal_handler_iter->handler)
- g_free (signal_handler_iter->handler);
- signal_handler_iter->handler = g_strdup (new_signal_handler->handler);
+ glade_signal_set_handler (signal_handler_iter,
+ glade_signal_get_handler (new_signal_handler));
/* Object */
- if (signal_handler_iter->userdata)
- g_free (signal_handler_iter->userdata);
- signal_handler_iter->userdata =
- g_strdup (new_signal_handler->userdata);
-
- signal_handler_iter->after = new_signal_handler->after;
- signal_handler_iter->swapped = new_signal_handler->swapped;
+ glade_signal_set_userdata (signal_handler_iter,
+ glade_signal_get_userdata (new_signal_handler));
+
+ /* Flags */
+ glade_signal_set_after (signal_handler_iter,
+ glade_signal_get_after (new_signal_handler));
+ glade_signal_set_swapped (signal_handler_iter,
+ glade_signal_get_swapped (new_signal_handler));
break;
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]