30
30
#include "gimpuimanager.h"
33
static void gimp_image_editor_class_init (GimpImageEditorClass *klass);
34
static void gimp_image_editor_init (GimpImageEditor *editor);
35
static void gimp_image_editor_docked_iface_init (GimpDockedInterface *docked_iface);
33
static void gimp_image_editor_docked_iface_init (GimpDockedInterface *iface);
37
35
static void gimp_image_editor_set_context (GimpDocked *docked,
38
36
GimpContext *context);
39
37
static void gimp_image_editor_destroy (GtkObject *object);
40
38
static void gimp_image_editor_real_set_image (GimpImageEditor *editor,
42
static void gimp_image_editor_image_flush (GimpImage *gimage,
40
static void gimp_image_editor_image_flush (GimpImage *image,
43
41
GimpImageEditor *editor);
46
static GimpEditorClass *parent_class = NULL;
50
gimp_image_editor_get_type (void)
52
static GType type = 0;
56
static const GTypeInfo editor_info =
58
sizeof (GimpImageEditorClass),
60
(GBaseFinalizeFunc) NULL,
61
(GClassInitFunc) gimp_image_editor_class_init,
62
NULL, /* class_finalize */
63
NULL, /* class_data */
64
sizeof (GimpImageEditor),
66
(GInstanceInitFunc) gimp_image_editor_init,
68
static const GInterfaceInfo docked_iface_info =
70
(GInterfaceInitFunc) gimp_image_editor_docked_iface_init,
71
NULL, /* iface_finalize */
75
type = g_type_register_static (GIMP_TYPE_EDITOR,
79
g_type_add_interface_static (type, GIMP_TYPE_DOCKED,
44
G_DEFINE_TYPE_WITH_CODE (GimpImageEditor, gimp_image_editor, GIMP_TYPE_EDITOR,
45
G_IMPLEMENT_INTERFACE (GIMP_TYPE_DOCKED,
46
gimp_image_editor_docked_iface_init))
48
#define parent_class gimp_image_editor_parent_class
87
52
gimp_image_editor_class_init (GimpImageEditorClass *klass)
89
54
GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
91
parent_class = g_type_class_peek_parent (klass);
93
56
object_class->destroy = gimp_image_editor_destroy;
95
58
klass->set_image = gimp_image_editor_real_set_image;
99
62
gimp_image_editor_init (GimpImageEditor *editor)
101
editor->gimage = NULL;
103
66
gtk_widget_set_sensitive (GTK_WIDGET (editor), FALSE);
107
gimp_image_editor_docked_iface_init (GimpDockedInterface *docked_iface)
70
gimp_image_editor_docked_iface_init (GimpDockedInterface *iface)
109
docked_iface->set_context = gimp_image_editor_set_context;
72
iface->set_context = gimp_image_editor_set_context;
150
113
gimp_image_editor_real_set_image (GimpImageEditor *editor,
154
g_signal_handlers_disconnect_by_func (editor->gimage,
117
g_signal_handlers_disconnect_by_func (editor->image,
155
118
gimp_image_editor_image_flush,
158
editor->gimage = gimage;
121
editor->image = image;
161
g_signal_connect (editor->gimage, "flush",
124
g_signal_connect (editor->image, "flush",
162
125
G_CALLBACK (gimp_image_editor_image_flush),
165
gtk_widget_set_sensitive (GTK_WIDGET (editor), gimage != NULL);
128
gtk_widget_set_sensitive (GTK_WIDGET (editor), image != NULL);
172
135
gimp_image_editor_set_image (GimpImageEditor *editor,
175
138
g_return_if_fail (GIMP_IS_IMAGE_EDITOR (editor));
176
g_return_if_fail (gimage == NULL || GIMP_IS_IMAGE (gimage));
139
g_return_if_fail (image == NULL || GIMP_IS_IMAGE (image));
178
if (gimage != editor->gimage)
141
if (image != editor->image)
180
GIMP_IMAGE_EDITOR_GET_CLASS (editor)->set_image (editor, gimage);
143
GIMP_IMAGE_EDITOR_GET_CLASS (editor)->set_image (editor, image);
182
145
if (GIMP_EDITOR (editor)->ui_manager)
183
146
gimp_ui_manager_update (GIMP_EDITOR (editor)->ui_manager,
152
gimp_image_editor_get_image (GimpImageEditor *editor)
154
g_return_val_if_fail (GIMP_IS_IMAGE_EDITOR (editor), NULL);
156
return editor->image;
189
160
/* private functions */
192
gimp_image_editor_image_flush (GimpImage *gimage,
163
gimp_image_editor_image_flush (GimpImage *image,
193
164
GimpImageEditor *editor)
195
166
if (GIMP_EDITOR (editor)->ui_manager)