35
36
#include "gimpview.h"
36
37
#include "gimpviewabledialog.h"
38
#include "gimpviewrenderer.h"
48
static void gimp_viewable_dialog_class_init (GimpViewableDialogClass *klass);
49
static void gimp_viewable_dialog_init (GimpViewableDialog *dialog);
51
52
static void gimp_viewable_dialog_set_property (GObject *object,
53
54
const GValue *value,
54
55
GParamSpec *pspec);
56
static void gimp_viewable_dialog_get_property (GObject *object,
56
61
static void gimp_viewable_dialog_destroy (GtkObject *object);
60
65
static void gimp_viewable_dialog_close (GimpViewableDialog *dialog);
63
static GimpDialogClass *parent_class = NULL;
67
gimp_viewable_dialog_get_type (void)
69
static GType dialog_type = 0;
73
static const GTypeInfo dialog_info =
75
sizeof (GimpViewableDialogClass),
77
(GBaseFinalizeFunc) NULL,
78
(GClassInitFunc) gimp_viewable_dialog_class_init,
79
NULL, /* class_finalize */
80
NULL, /* class_data */
81
sizeof (GimpViewableDialog),
83
(GInstanceInitFunc) gimp_viewable_dialog_init,
86
dialog_type = g_type_register_static (GIMP_TYPE_DIALOG,
68
G_DEFINE_TYPE (GimpViewableDialog, gimp_viewable_dialog, GIMP_TYPE_DIALOG)
70
#define parent_class gimp_viewable_dialog_parent_class
95
74
gimp_viewable_dialog_class_init (GimpViewableDialogClass *klass)
97
GtkObjectClass *gtk_object_class;
98
GObjectClass *object_class;
100
gtk_object_class = GTK_OBJECT_CLASS (klass);
101
object_class = G_OBJECT_CLASS (klass);
103
parent_class = g_type_class_peek_parent (klass);
105
gtk_object_class->destroy = gimp_viewable_dialog_destroy;
76
GtkObjectClass *gtk_object_class = GTK_OBJECT_CLASS (klass);
77
GObjectClass *object_class = G_OBJECT_CLASS (klass);
79
gtk_object_class->destroy = gimp_viewable_dialog_destroy;
81
object_class->get_property = gimp_viewable_dialog_get_property;
107
82
object_class->set_property = gimp_viewable_dialog_set_property;
84
g_object_class_install_property (object_class, PROP_VIEWABLE,
85
g_param_spec_object ("viewable", NULL, NULL,
87
GIMP_PARAM_READWRITE));
88
g_object_class_install_property (object_class, PROP_CONTEXT,
89
g_param_spec_object ("context", NULL, NULL,
91
GIMP_PARAM_READWRITE));
109
92
g_object_class_install_property (object_class, PROP_STOCK_ID,
110
93
g_param_spec_string ("stock-id", NULL, NULL,
113
96
G_PARAM_CONSTRUCT_ONLY));
114
97
g_object_class_install_property (object_class, PROP_DESC,
115
98
g_param_spec_string ("description", NULL, NULL,
100
GIMP_PARAM_WRITABLE |
118
101
G_PARAM_CONSTRUCT));
119
102
g_object_class_install_property (object_class, PROP_PARENT,
120
103
g_param_spec_object ("parent", NULL, NULL,
105
GIMP_PARAM_WRITABLE |
123
106
G_PARAM_CONSTRUCT_ONLY));
159
142
gtk_box_pack_start (GTK_BOX (vbox), dialog->desc_label, FALSE, FALSE, 0);
160
143
gtk_widget_show (dialog->desc_label);
162
dialog->viewable_label = gtk_label_new (NULL);
163
gtk_misc_set_alignment (GTK_MISC (dialog->viewable_label), 0.0, 0.5);
145
dialog->viewable_label = g_object_new (GTK_TYPE_LABEL,
148
"ellipsize", PANGO_ELLIPSIZE_END,
164
150
gimp_label_set_attributes (GTK_LABEL (dialog->viewable_label),
165
151
PANGO_ATTR_SCALE, PANGO_SCALE_SMALL,
179
165
switch (property_id)
168
gimp_viewable_dialog_set_viewable (dialog,
169
g_value_get_object (value),
173
gimp_viewable_dialog_set_viewable (dialog,
175
GIMP_VIEW (dialog->view)->viewable :
177
g_value_get_object (value));
181
179
case PROP_STOCK_ID:
182
180
gtk_image_set_from_stock (GTK_IMAGE (dialog->icon),
183
181
g_value_get_string (value),
210
gimp_viewable_dialog_get_property (GObject *object,
215
GimpViewableDialog *dialog = GIMP_VIEWABLE_DIALOG (object);
220
g_value_set_object (value,
222
GIMP_VIEW (dialog->view)->viewable : NULL);
225
g_value_set_object (value, dialog->context);
228
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
212
234
gimp_viewable_dialog_destroy (GtkObject *object)
214
236
GimpViewableDialog *dialog = GIMP_VIEWABLE_DIALOG (object);
217
gimp_viewable_dialog_set_viewable (dialog, NULL);
239
gimp_viewable_dialog_set_viewable (dialog, NULL, NULL);
219
241
GTK_OBJECT_CLASS (parent_class)->destroy (object);
223
245
gimp_viewable_dialog_new (GimpViewable *viewable,
246
GimpContext *context,
224
247
const gchar *title,
225
248
const gchar *role,
226
249
const gchar *stock_id,
233
256
GimpViewableDialog *dialog;
236
g_return_val_if_fail (! viewable || GIMP_IS_VIEWABLE (viewable), NULL);
259
g_return_val_if_fail (viewable == NULL || GIMP_IS_VIEWABLE (viewable), NULL);
260
g_return_val_if_fail (context == NULL || GIMP_IS_CONTEXT (context), NULL);
237
261
g_return_val_if_fail (title != NULL, NULL);
238
262
g_return_val_if_fail (role != NULL, NULL);
239
263
g_return_val_if_fail (parent == NULL || GTK_IS_WIDGET (parent), NULL);
266
g_warning ("Use of GimpViewableDialog with a NULL viewable is depecrated!");
241
268
dialog = g_object_new (GIMP_TYPE_VIEWABLE_DIALOG,
269
"viewable", viewable,
244
273
"help-func", help_func,
252
281
gimp_dialog_add_buttons_valist (GIMP_DIALOG (dialog), args);
256
gimp_viewable_dialog_set_viewable (dialog, viewable);
258
284
return GTK_WIDGET (dialog);
262
288
gimp_viewable_dialog_set_viewable (GimpViewableDialog *dialog,
263
GimpViewable *viewable)
289
GimpViewable *viewable,
290
GimpContext *context)
265
292
g_return_if_fail (GIMP_IS_VIEWABLE_DIALOG (dialog));
266
g_return_if_fail (! viewable || GIMP_IS_VIEWABLE (viewable));
293
g_return_if_fail (viewable == NULL || GIMP_IS_VIEWABLE (viewable));
294
g_return_if_fail (context == NULL || GIMP_IS_CONTEXT (context));
296
dialog->context = context;
270
GimpViewable *old_viewable;
272
old_viewable = GIMP_VIEW (dialog->preview)->viewable;
300
GimpViewable *old_viewable = GIMP_VIEW (dialog->view)->viewable;
274
302
if (viewable == old_viewable)
304
gimp_view_renderer_set_context (GIMP_VIEW (dialog->view)->renderer,
277
gtk_widget_destroy (dialog->preview);
309
gtk_widget_destroy (dialog->view);
279
311
if (old_viewable)
299
dialog->preview = gimp_view_new (viewable, 32, 1, TRUE);
300
gtk_box_pack_end (GTK_BOX (dialog->icon->parent), dialog->preview,
331
dialog->view = gimp_view_new (context, viewable, 32, 1, TRUE);
332
gtk_box_pack_end (GTK_BOX (dialog->icon->parent), dialog->view,
301
333
FALSE, FALSE, 2);
302
gtk_widget_show (dialog->preview);
334
gtk_widget_show (dialog->view);
304
g_object_add_weak_pointer (G_OBJECT (dialog->preview),
305
(gpointer *) &dialog->preview);
336
g_object_add_weak_pointer (G_OBJECT (dialog->view),
337
(gpointer) &dialog->view);
307
339
gimp_viewable_dialog_name_changed (GIMP_OBJECT (viewable), dialog);