summaryrefslogtreecommitdiff
path: root/gladeui/glade-project.c
diff options
context:
space:
mode:
authorJuan Pablo Ugarte <juanpablougarte@gmail.com>2018-08-30 20:35:59 -0300
committerJuan Pablo Ugarte <juanpablougarte@gmail.com>2018-10-16 11:30:17 -0700
commit949ee16435aae1e994a78d01b5e55b7acf0c3a85 (patch)
tree92ddf9cb6e5aa041ab276cd3608a9b6ec1326cef /gladeui/glade-project.c
parent8553bf0346e110e5f080ce207aa78572d823f64a (diff)
downloadglade-949ee16435aae1e994a78d01b5e55b7acf0c3a85.tar.gz
GladeProject: add handler signals
Add add, remove, change and activate handler signals. These signals can be used to easily track signal changes in a project instead of connecting callbacks to every widget.
Diffstat (limited to 'gladeui/glade-project.c')
-rw-r--r--gladeui/glade-project.c128
1 files changed, 128 insertions, 0 deletions
diff --git a/gladeui/glade-project.c b/gladeui/glade-project.c
index 1c40c865..670084e8 100644
--- a/gladeui/glade-project.c
+++ b/gladeui/glade-project.c
@@ -180,6 +180,10 @@ enum
TARGETS_CHANGED,
LOAD_PROGRESS,
WIDGET_VISIBILITY_CHANGED,
+ ADD_SIGNAL_HANDLER,
+ REMOVE_SIGNAL_HANDLER,
+ CHANGE_SIGNAL_HANDLER,
+ ACTIVATE_SIGNAL_HANDLER,
LAST_SIGNAL
};
@@ -952,6 +956,80 @@ glade_project_class_init (GladeProjectClass *klass)
_glade_marshal_VOID__OBJECT_BOOLEAN,
G_TYPE_NONE, 2, GLADE_TYPE_WIDGET, G_TYPE_BOOLEAN);
+ /**
+ * GladeProject::add-signal-handler:
+ * @gladeproject: the #GladeProject which received the signal.
+ * @gladewidget: the #GladeWidget
+ * @signal: the #GladeSignal that was added to @gladewidget.
+ */
+ glade_project_signals[ADD_SIGNAL_HANDLER] =
+ g_signal_new ("add-signal-handler",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _glade_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE,
+ 2,
+ GLADE_TYPE_WIDGET,
+ GLADE_TYPE_SIGNAL);
+
+ /**
+ * GladeProject::remove-signal-handler:
+ * @gladeproject: the #GladeProject which received the signal.
+ * @gladewidget: the #GladeWidget
+ * @signal: the #GladeSignal that was removed from @gladewidget.
+ */
+ glade_project_signals[REMOVE_SIGNAL_HANDLER] =
+ g_signal_new ("remove-signal-handler",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _glade_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE,
+ 2,
+ GLADE_TYPE_WIDGET,
+ GLADE_TYPE_SIGNAL);
+
+ /**
+ * GladeProject::change-signal-handler:
+ * @gladeproject: the #GladeProject which received the signal.
+ * @gladewidget: the #GladeWidget
+ * @old_signal: the old #GladeSignal that changed
+ * @new_signal: the new #GladeSignal
+ */
+ glade_project_signals[CHANGE_SIGNAL_HANDLER] =
+ g_signal_new ("change-signal-handler",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _glade_marshal_VOID__OBJECT_OBJECT_OBJECT,
+ G_TYPE_NONE,
+ 3,
+ GLADE_TYPE_WIDGET,
+ GLADE_TYPE_SIGNAL,
+ GLADE_TYPE_SIGNAL);
+
+ /**
+ * GladeProject::activate-signal-handler:
+ * @gladeproject: the #GladeProject which received the signal.
+ * @gladewidget: the #GladeWidget
+ * @signal: the #GladeSignal that was activated
+ */
+ glade_project_signals[ACTIVATE_SIGNAL_HANDLER] =
+ g_signal_new ("activate-signal-handler",
+ G_TYPE_FROM_CLASS (object_class),
+ G_SIGNAL_RUN_LAST,
+ 0,
+ NULL, NULL,
+ _glade_marshal_VOID__OBJECT_OBJECT,
+ G_TYPE_NONE,
+ 2,
+ GLADE_TYPE_WIDGET,
+ GLADE_TYPE_SIGNAL);
+
glade_project_props[PROP_MODIFIED] =
g_param_spec_boolean ("modified",
"Modified",
@@ -5383,3 +5461,53 @@ glade_project_command_delete (GladeProject *project)
if (widgets)
g_list_free (widgets);
}
+
+/* Private */
+
+void
+_glade_project_emit_add_signal_handler (GladeWidget *widget,
+ const GladeSignal *signal)
+{
+ GladeProject *project = glade_widget_get_project (widget);
+
+ if (project)
+ g_signal_emit (project, glade_project_signals[ADD_SIGNAL_HANDLER], 0,
+ widget, signal);
+}
+
+void
+_glade_project_emit_remove_signal_handler (GladeWidget *widget,
+ const GladeSignal *signal)
+{
+ GladeProject *project = glade_widget_get_project (widget);
+
+ if (project)
+ g_signal_emit (project, glade_project_signals[REMOVE_SIGNAL_HANDLER], 0,
+ widget, signal);
+
+}
+
+void
+_glade_project_emit_change_signal_handler (GladeWidget *widget,
+ const GladeSignal *old_signal,
+ const GladeSignal *new_signal)
+{
+ GladeProject *project = glade_widget_get_project (widget);
+
+ if (project)
+ g_signal_emit (project, glade_project_signals[CHANGE_SIGNAL_HANDLER], 0,
+ widget, old_signal, new_signal);
+}
+
+void
+_glade_project_emit_activate_signal_handler (GladeWidget *widget,
+ const GladeSignal *signal)
+{
+ GladeProject *project = glade_widget_get_project (widget);
+
+ if (project)
+ g_signal_emit (project, glade_project_signals[ACTIVATE_SIGNAL_HANDLER], 0,
+ widget, signal);
+
+}
+