[gimp] app: add "response" signal to GimpToolGui
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add "response" signal to GimpToolGui
- Date: Fri, 7 Jun 2013 21:47:03 +0000 (UTC)
commit ad8d12ed69cf5afd2b808914c424849dee57ef91
Author: Michael Natterer <mitch gimp org>
Date: Fri Jun 7 23:45:11 2013 +0200
app: add "response" signal to GimpToolGui
and connect to it instead of to gimp_tool_gui_get_dialog()'s signal.
One more step towards on-the-fly embedding/detaching.
app/display/gimptoolgui.c | 43 +++++++++++++++++++++++++++++++++++++-
app/display/gimptoolgui.h | 4 +++
app/tools/gimpcolorpickertool.c | 6 ++--
app/tools/gimpimagemaptool.c | 18 ++++++----------
app/tools/gimpmeasuretool.c | 6 ++--
app/tools/gimptransformtool.c | 6 ++--
6 files changed, 61 insertions(+), 22 deletions(-)
---
diff --git a/app/display/gimptoolgui.c b/app/display/gimptoolgui.c
index 4f83875..277a8b5 100644
--- a/app/display/gimptoolgui.c
+++ b/app/display/gimptoolgui.c
@@ -28,6 +28,7 @@
#include "display-types.h"
#include "core/gimpcontext.h"
+#include "core/gimpmarshal.h"
#include "core/gimptoolinfo.h"
#include "widgets/gimpdialogfactory.h"
@@ -39,6 +40,13 @@
#include "gimptoolgui.h"
+enum
+{
+ RESPONSE,
+ LAST_SIGNAL
+};
+
+
typedef struct _ResponseEntry ResponseEntry;
struct _ResponseEntry
@@ -80,6 +88,10 @@ static void gimp_tool_gui_update_buttons (GimpToolGui *gui);
static void gimp_tool_gui_update_shell (GimpToolGui *gui);
static void gimp_tool_gui_update_viewable (GimpToolGui *gui);
+static void gimp_tool_gui_dialog_response (GtkWidget *dialog,
+ gint response_id,
+ GimpToolGui *gui);
+
static ResponseEntry * response_entry_new (gint response_id,
const gchar *stock_id);
static void response_entry_free (ResponseEntry *entry);
@@ -89,6 +101,10 @@ static ResponseEntry * response_entry_find (GList *entries,
G_DEFINE_TYPE (GimpToolGui, gimp_tool_gui, GIMP_TYPE_OBJECT)
+static guint signals[LAST_SIGNAL] = { 0, };
+
+#define parent_class gimp_tool_gui_parent_class
+
static void
gimp_tool_gui_class_init (GimpToolGuiClass *klass)
@@ -98,6 +114,16 @@ gimp_tool_gui_class_init (GimpToolGuiClass *klass)
object_class->dispose = gimp_tool_gui_dispose;
object_class->finalize = gimp_tool_gui_finalize;
+ signals[RESPONSE] =
+ g_signal_new ("response",
+ G_OBJECT_CLASS_TYPE (klass),
+ G_SIGNAL_RUN_LAST,
+ G_STRUCT_OFFSET (GimpToolGuiClass, response),
+ NULL, NULL,
+ gimp_marshal_VOID__INT,
+ G_TYPE_NONE, 1,
+ G_TYPE_INT);
+
g_type_class_add_private (klass, sizeof (GimpToolGuiPrivate));
}
@@ -142,7 +168,7 @@ gimp_tool_gui_dispose (GObject *object)
private->dialog = NULL;
}
- G_OBJECT_CLASS (gimp_tool_gui_parent_class)->dispose (object);
+ G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
@@ -163,7 +189,7 @@ gimp_tool_gui_finalize (GObject *object)
private->response_entries = NULL;
}
- G_OBJECT_CLASS (gimp_tool_gui_parent_class)->finalize (object);
+ G_OBJECT_CLASS (parent_class)->finalize (object);
}
@@ -533,6 +559,10 @@ gimp_tool_gui_create_dialog (GimpToolGui *gui)
if (private->viewable)
gimp_tool_gui_update_viewable (gui);
+
+ g_signal_connect_object (private->dialog, "response",
+ G_CALLBACK (gimp_tool_gui_dialog_response),
+ G_OBJECT (gui), 0);
}
static void
@@ -598,6 +628,15 @@ gimp_tool_gui_update_viewable (GimpToolGui *gui)
}
}
+static void
+gimp_tool_gui_dialog_response (GtkWidget *dialog,
+ gint response_id,
+ GimpToolGui *gui)
+{
+ g_signal_emit (gui, signals[RESPONSE], 0,
+ response_id);
+}
+
static ResponseEntry *
response_entry_new (gint response_id,
const gchar *stock_id)
diff --git a/app/display/gimptoolgui.h b/app/display/gimptoolgui.h
index d1db4d1..b9f1e3d 100644
--- a/app/display/gimptoolgui.h
+++ b/app/display/gimptoolgui.h
@@ -43,6 +43,10 @@ struct _GimpToolGui
struct _GimpToolGuiClass
{
GimpObjectClass parent_instance;
+
+ void (* response) (GimpToolGui *gui,
+ gint response_id);
+
};
diff --git a/app/tools/gimpcolorpickertool.c b/app/tools/gimpcolorpickertool.c
index 9456d62..fe68851 100644
--- a/app/tools/gimpcolorpickertool.c
+++ b/app/tools/gimpcolorpickertool.c
@@ -68,7 +68,7 @@ static void gimp_color_picker_tool_picked (GimpColorTool *color_t
gint color_index);
static void gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool);
-static void gimp_color_picker_tool_info_response (GtkWidget *widget,
+static void gimp_color_picker_tool_info_response (GimpToolGui *gui,
gint response_id,
GimpColorPickerTool *picker_tool);
static void gimp_color_picker_tool_info_update (GimpColorPickerTool *picker_tool,
@@ -327,7 +327,7 @@ gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
gimp_tool_gui_set_viewable (picker_tool->gui,
GIMP_VIEWABLE (tool->drawable));
- g_signal_connect (dialog, "response",
+ g_signal_connect (picker_tool->gui, "response",
G_CALLBACK (gimp_color_picker_tool_info_response),
picker_tool);
@@ -368,7 +368,7 @@ gimp_color_picker_tool_info_create (GimpColorPickerTool *picker_tool)
}
static void
-gimp_color_picker_tool_info_response (GtkWidget *widget,
+gimp_color_picker_tool_info_response (GimpToolGui *gui,
gint response_id,
GimpColorPickerTool *picker_tool)
{
diff --git a/app/tools/gimpimagemaptool.c b/app/tools/gimpimagemaptool.c
index 3608fee..f8bcb24 100644
--- a/app/tools/gimpimagemaptool.c
+++ b/app/tools/gimpimagemaptool.c
@@ -117,7 +117,7 @@ static void gimp_image_map_tool_config_notify (GObject *object,
const GParamSpec *pspec,
GimpImageMapTool *im_tool);
-static void gimp_image_map_tool_response (GtkWidget *widget,
+static void gimp_image_map_tool_response (GimpToolGui *gui,
gint response_id,
GimpImageMapTool *im_tool);
@@ -316,7 +316,6 @@ gimp_image_map_tool_initialize (GimpTool *tool,
if (! image_map_tool->gui)
{
GimpImageMapToolClass *klass;
- GtkWidget *dialog;
GtkWidget *vbox;
GtkWidget *toggle;
@@ -344,10 +343,9 @@ gimp_image_map_tool_initialize (GimpTool *tool,
GTK_RESPONSE_CANCEL,
-1);
- dialog = gimp_tool_gui_get_dialog (image_map_tool->gui);
- vbox = gimp_tool_gui_get_vbox (image_map_tool->gui);
+ vbox = gimp_tool_gui_get_vbox (image_map_tool->gui);
- g_signal_connect_object (dialog, "response",
+ g_signal_connect_object (image_map_tool->gui, "response",
G_CALLBACK (gimp_image_map_tool_response),
G_OBJECT (image_map_tool), 0);
@@ -448,26 +446,24 @@ gimp_image_map_tool_key_press (GimpTool *tool,
if (image_map_tool->gui && display == tool->display)
{
- GtkWidget *dialog = gimp_tool_gui_get_dialog (image_map_tool->gui);
-
switch (kevent->keyval)
{
case GDK_KEY_Return:
case GDK_KEY_KP_Enter:
case GDK_KEY_ISO_Enter:
- gimp_image_map_tool_response (dialog,
+ gimp_image_map_tool_response (image_map_tool->gui,
GTK_RESPONSE_OK,
image_map_tool);
return TRUE;
case GDK_KEY_BackSpace:
- gimp_image_map_tool_response (dialog,
+ gimp_image_map_tool_response (image_map_tool->gui,
RESPONSE_RESET,
image_map_tool);
return TRUE;
case GDK_KEY_Escape:
- gimp_image_map_tool_response (dialog,
+ gimp_image_map_tool_response (image_map_tool->gui,
GTK_RESPONSE_CANCEL,
image_map_tool);
return TRUE;
@@ -651,7 +647,7 @@ gimp_image_map_tool_config_notify (GObject *object,
}
static void
-gimp_image_map_tool_response (GtkWidget *widget,
+gimp_image_map_tool_response (GimpToolGui *gui,
gint response_id,
GimpImageMapTool *image_map_tool)
{
diff --git a/app/tools/gimpmeasuretool.c b/app/tools/gimpmeasuretool.c
index 2c07678..bd24c36 100644
--- a/app/tools/gimpmeasuretool.c
+++ b/app/tools/gimpmeasuretool.c
@@ -1058,9 +1058,9 @@ gimp_measure_tool_dialog_new (GimpMeasureTool *measure)
if (GTK_IS_DIALOG (dialog))
gtk_window_set_focus_on_map (GTK_WINDOW (dialog), FALSE);
- g_signal_connect_swapped (dialog, "response",
- G_CALLBACK (g_object_unref),
- gui);
+ g_signal_connect (gui, "response",
+ G_CALLBACK (g_object_unref),
+ NULL);
table = gtk_table_new (4, 5, TRUE);
gtk_table_set_col_spacings (GTK_TABLE (table), 6);
diff --git a/app/tools/gimptransformtool.c b/app/tools/gimptransformtool.c
index ebb5fa3..a7f4548 100644
--- a/app/tools/gimptransformtool.c
+++ b/app/tools/gimptransformtool.c
@@ -162,7 +162,7 @@ static void gimp_transform_tool_handles_recalc (GimpTransformTool
GimpDisplay *display,
gint *handle_w,
gint *handle_h);
-static void gimp_transform_tool_response (GtkWidget *widget,
+static void gimp_transform_tool_response (GimpToolGui *gui,
gint response_id,
GimpTransformTool *tr_tool);
@@ -1709,7 +1709,7 @@ gimp_transform_tool_dialog (GimpTransformTool *tr_tool)
GTK_RESPONSE_CANCEL,
-1);
- g_signal_connect (gimp_tool_gui_get_dialog (tr_tool->gui), "response",
+ g_signal_connect (tr_tool->gui, "response",
G_CALLBACK (gimp_transform_tool_response),
tr_tool);
@@ -1750,7 +1750,7 @@ gimp_transform_tool_recalc_matrix (GimpTransformTool *tr_tool)
}
static void
-gimp_transform_tool_response (GtkWidget *widget,
+gimp_transform_tool_response (GimpToolGui *gui,
gint response_id,
GimpTransformTool *tr_tool)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]