summaryrefslogtreecommitdiff
path: root/src/glade-window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/glade-window.c')
-rw-r--r--src/glade-window.c70
1 files changed, 66 insertions, 4 deletions
diff --git a/src/glade-window.c b/src/glade-window.c
index c290a399..869ff56c 100644
--- a/src/glade-window.c
+++ b/src/glade-window.c
@@ -30,6 +30,7 @@
#include "glade-resources.h"
#include "glade-preferences.h"
#include "glade-registration.h"
+#include "glade-dbus.h"
#include "glade-intro.h"
#include <gladeui/glade.h>
@@ -406,6 +407,37 @@ project_targets_changed_cb (GladeProject *project, GladeWindow *window)
refresh_stack_title_for_project (window, project);
}
+static void
+project_add_signal_handler_cb (GladeProject *project,
+ GladeWidget *widget,
+ GladeSignal *signal,
+ GladeWindow *window)
+{
+ glade_dbus_emit_handler_added (G_APPLICATION (window->priv->application),
+ widget, signal, NULL);
+}
+
+static void
+project_remove_signal_handler_cb (GladeProject *project,
+ GladeWidget *widget,
+ GladeSignal *signal,
+ GladeWindow *window)
+{
+ glade_dbus_emit_handler_removed (G_APPLICATION (window->priv->application),
+ widget, signal, NULL);
+}
+
+static void
+project_change_signal_handler_cb (GladeProject *project,
+ GladeWidget *widget,
+ GladeSignal *old_signal,
+ GladeSignal *new_signal,
+ GladeWindow *window)
+{
+ glade_dbus_emit_handler_changed (G_APPLICATION (window->priv->application),
+ widget, old_signal, new_signal, NULL);
+}
+
static inline void
actions_set_enabled (GladeWindow *window, const gchar *name, gboolean enabled)
{
@@ -1580,6 +1612,12 @@ add_project (GladeWindow *window, GladeProject *project, gboolean for_file)
G_CALLBACK (project_selection_changed_cb), window);
g_signal_connect (G_OBJECT (project), "targets-changed",
G_CALLBACK (project_targets_changed_cb), window);
+ g_signal_connect (G_OBJECT (project), "add-signal-handler",
+ G_CALLBACK (project_add_signal_handler_cb), window);
+ g_signal_connect (G_OBJECT (project), "remove-signal-handler",
+ G_CALLBACK (project_remove_signal_handler_cb), window);
+ g_signal_connect (G_OBJECT (project), "change-signal-handler",
+ G_CALLBACK (project_change_signal_handler_cb), window);
g_signal_connect (G_OBJECT (project), "changed",
G_CALLBACK (project_changed_cb), window);
@@ -1648,12 +1686,12 @@ on_redo_button_button_press_event (GtkWidget *widget,
return FALSE;
}
-void
+GladeProject *
glade_window_new_project (GladeWindow *window)
{
GladeProject *project;
- g_return_if_fail (GLADE_IS_WINDOW (window));
+ g_return_val_if_fail (GLADE_IS_WINDOW (window), NULL);
project = glade_project_new ();
if (!project)
@@ -1661,9 +1699,11 @@ glade_window_new_project (GladeWindow *window)
glade_util_ui_message (GTK_WIDGET (window),
GLADE_UI_ERROR, NULL,
_("Could not create a new project."));
- return;
+ return NULL;
}
add_project (window, project, FALSE);
+
+ return project;
}
static void
@@ -2142,7 +2182,6 @@ glade_window_init (GladeWindow *window)
static void
glade_window_action_handler (GladeWindow *window, const gchar *name)
{
- GladeWindowPrivate *priv = window->priv;
GAction *action;
if ((action = GLADE_WINDOW_GET_ACTION (window, name)))
@@ -2383,10 +2422,22 @@ on_application_notify (GObject *gobject, GParamSpec *pspec)
}
static void
+on_glade_editor_signal_activated (GladeSignalEditor *signal_editor,
+ GladeSignal *signal,
+ GladeWindow *window)
+{
+ glade_dbus_emit_handler_activated (G_APPLICATION (window->priv->application),
+ glade_signal_editor_get_widget (signal_editor),
+ signal,
+ NULL);
+}
+
+static void
glade_window_constructed (GObject *object)
{
GladeWindow *window = GLADE_WINDOW (object);
GladeWindowPrivate *priv = window->priv;
+ GladeSignalEditor *signal_editor;
gchar *version;
/* Chain up... */
@@ -2423,6 +2474,10 @@ glade_window_constructed (GObject *object)
g_signal_connect (G_OBJECT (window), "key-press-event",
G_CALLBACK (glade_utils_hijack_key_press), window);
+ g_object_get (priv->editor, "signal-editor", &signal_editor, NULL);
+ g_signal_connect (signal_editor, "signal-activated",
+ G_CALLBACK (on_glade_editor_signal_activated), window);
+
/* Load configuration, we need the list of extra catalog paths before creating
* the GladeApp
*/
@@ -2516,6 +2571,12 @@ glade_window_new (void)
return g_object_new (GLADE_TYPE_WINDOW, NULL);
}
+GladeProject *
+glade_window_get_active_project (GladeWindow *window)
+{
+ return get_active_project (window);
+}
+
void
glade_window_check_devhelp (GladeWindow *window)
{
@@ -2578,3 +2639,4 @@ glade_window_registration_notify_user (GladeWindow *window)
/* translators: Text to show in the statusbar if the user did not completed the survey and choose not to show the notification dialog again */
_("Go to Help -> Registration & User Survey and complete our survey!"));
}
+