~ubuntu-branches/ubuntu/jaunty/gimp/jaunty-security

« back to all changes in this revision

Viewing changes to app/widgets/gimpcolordisplayeditor.c

  • Committer: Bazaar Package Importer
  • Author(s): Daniel Holbach
  • Date: 2007-05-02 16:33:03 UTC
  • mfrom: (1.1.4 upstream)
  • Revision ID: james.westby@ubuntu.com-20070502163303-bvzhjzbpw8qglc4y
Tags: 2.3.16-1ubuntu1
* Resynchronized with Debian, remaining Ubuntu changes:
  - debian/rules: i18n magic.
* debian/control.in:
  - Maintainer: Ubuntu Core Developers <ubuntu-devel@lists.ubuntu.com>
* debian/patches/02_help-message.patch,
  debian/patches/03_gimp.desktop.in.in.patch,
  debian/patches/10_dont_show_wizard.patch: updated.
* debian/patches/04_composite-signedness.patch,
  debian/patches/05_add-letter-spacing.patch: dropped, used upstream.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/* The GIMP -- an image manipulation program
 
1
/* GIMP - The GNU Image Manipulation Program
2
2
 * Copyright (C) 1995 Spencer Kimball and Peter Mattis
3
3
 *
4
4
 * gimpcolordisplayeditor.c
28
28
#include "widgets-types.h"
29
29
 
30
30
#include "gimpcolordisplayeditor.h"
 
31
#include "gimpeditor.h"
31
32
 
32
33
#include "gimp-intl.h"
33
34
 
34
35
 
35
 
#define LIST_WIDTH  150
 
36
#define LIST_WIDTH  200
36
37
#define LIST_HEIGHT 100
37
38
 
38
39
 
39
40
enum
40
41
{
41
42
  SRC_COLUMN_NAME,
 
43
  SRC_COLUMN_ICON,
42
44
  SRC_COLUMN_TYPE,
43
45
  N_SRC_COLUMNS
44
46
};
47
49
{
48
50
  DEST_COLUMN_ENABLED,
49
51
  DEST_COLUMN_NAME,
 
52
  DEST_COLUMN_ICON,
50
53
  DEST_COLUMN_FILTER,
51
54
  N_DEST_COLUMNS
52
55
};
53
56
 
54
57
 
55
 
static void   gimp_color_display_editor_class_init        (GimpColorDisplayEditorClass *klass);
56
 
static void   gimp_color_display_editor_init              (GimpColorDisplayEditor      *editor);
57
 
 
58
 
static void   gimp_color_display_editor_destroy         (GtkObject             *object);
 
58
static void   gimp_color_display_editor_destroy        (GtkObject             *object);
59
59
 
60
60
static void   gimp_color_display_editor_add_clicked    (GtkWidget             *widget,
61
61
                                                        GimpColorDisplayEditor *editor);
95
95
static void   gimp_color_display_editor_update_buttons (GimpColorDisplayEditor *editor);
96
96
 
97
97
 
98
 
static GtkVBoxClass *parent_class = NULL;
99
 
 
100
 
 
101
 
GType
102
 
gimp_color_display_editor_get_type (void)
103
 
{
104
 
  static GType type = 0;
105
 
 
106
 
  if (! type)
107
 
    {
108
 
      static const GTypeInfo editor_info =
109
 
      {
110
 
        sizeof (GimpColorDisplayEditorClass),
111
 
        NULL,           /* base_init */
112
 
        NULL,           /* base_finalize */
113
 
        (GClassInitFunc) gimp_color_display_editor_class_init,
114
 
        NULL,           /* class_finalize */
115
 
        NULL,           /* class_tool */
116
 
        sizeof (GimpColorDisplayEditor),
117
 
        0,              /* n_preallocs */
118
 
        (GInstanceInitFunc) gimp_color_display_editor_init,
119
 
      };
120
 
 
121
 
      type = g_type_register_static (GTK_TYPE_VBOX,
122
 
                                     "GimpColorDisplayEditor",
123
 
                                     &editor_info, 0);
124
 
    }
125
 
 
126
 
  return type;
127
 
}
 
98
G_DEFINE_TYPE (GimpColorDisplayEditor, gimp_color_display_editor, GTK_TYPE_VBOX)
 
99
 
 
100
#define parent_class gimp_color_display_editor_parent_class
 
101
 
128
102
 
129
103
static void
130
104
gimp_color_display_editor_class_init (GimpColorDisplayEditorClass *klass)
131
105
{
132
106
  GtkObjectClass *object_class = GTK_OBJECT_CLASS (klass);
133
107
 
134
 
  parent_class = g_type_class_peek_parent (klass);
135
 
 
136
108
  object_class->destroy = gimp_color_display_editor_destroy;
137
109
}
138
110
 
139
111
static void
140
112
gimp_color_display_editor_init (GimpColorDisplayEditor *editor)
141
113
{
 
114
  GtkWidget         *paned;
142
115
  GtkWidget         *hbox;
143
116
  GtkWidget         *ed;
144
117
  GtkWidget         *scrolled_win;
148
121
  GtkTreeViewColumn *column;
149
122
  GtkCellRenderer   *rend;
150
123
 
151
 
  gtk_box_set_spacing (GTK_BOX (editor), 12);
152
 
  gtk_box_set_homogeneous (GTK_BOX (editor), TRUE);
 
124
  paned = gtk_vpaned_new ();
 
125
  gtk_box_pack_start (GTK_BOX (editor), paned, TRUE, TRUE, 0);
 
126
  gtk_widget_show (paned);
153
127
 
154
128
  hbox = gtk_hbox_new (FALSE, 6);
155
 
  gtk_box_pack_start (GTK_BOX (editor), hbox, TRUE, TRUE, 0);
 
129
  gtk_paned_pack1 (GTK_PANED (paned), hbox, FALSE, FALSE);
156
130
  gtk_widget_show (hbox);
157
131
 
158
132
  scrolled_win = gtk_scrolled_window_new (NULL, NULL);
159
133
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win),
160
134
                                       GTK_SHADOW_IN);
161
135
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
162
 
                                  GTK_POLICY_AUTOMATIC,
163
 
                                  GTK_POLICY_AUTOMATIC);
 
136
                                  GTK_POLICY_AUTOMATIC,
 
137
                                  GTK_POLICY_AUTOMATIC);
164
138
  gtk_box_pack_start (GTK_BOX (hbox), scrolled_win, TRUE, TRUE, 0);
165
139
  gtk_widget_show (scrolled_win);
166
140
 
167
141
  editor->src = gtk_list_store_new (N_SRC_COLUMNS,
168
142
                                    G_TYPE_STRING,
169
 
                                    G_TYPE_POINTER);
 
143
                                    G_TYPE_STRING,
 
144
                                    G_TYPE_GTYPE);
170
145
  tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (editor->src));
171
146
  g_object_unref (editor->src);
172
147
 
173
148
  gtk_widget_set_size_request (tv, LIST_WIDTH, LIST_HEIGHT);
174
149
  gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW (tv), FALSE);
175
150
 
176
 
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tv),
177
 
                                               0, _("Available Filters"),
178
 
                                               gtk_cell_renderer_text_new (),
179
 
                                               "text", SRC_COLUMN_NAME,
180
 
                                               NULL);
 
151
  column = gtk_tree_view_column_new ();
 
152
  gtk_tree_view_column_set_title (column, _("Available Filters"));
 
153
  gtk_tree_view_append_column (GTK_TREE_VIEW (tv), column);
 
154
 
 
155
  rend = gtk_cell_renderer_pixbuf_new ();
 
156
  gtk_tree_view_column_pack_start (column, rend, FALSE);
 
157
  gtk_tree_view_column_set_attributes (column, rend,
 
158
                                       "stock-id", SRC_COLUMN_ICON,
 
159
                                       NULL);
 
160
 
 
161
  rend = gtk_cell_renderer_text_new ();
 
162
  gtk_tree_view_column_pack_start (column, rend, TRUE);
 
163
  gtk_tree_view_column_set_attributes (column, rend,
 
164
                                       "text", SRC_COLUMN_NAME,
 
165
                                       NULL);
 
166
 
181
167
  gtk_container_add (GTK_CONTAINER (scrolled_win), tv);
182
168
  gtk_widget_show (tv);
183
169
 
187
173
                    G_CALLBACK (gimp_color_display_editor_src_changed),
188
174
                    editor);
189
175
 
190
 
  vbox = gtk_vbox_new (TRUE, 0);
 
176
  vbox = gtk_vbox_new (TRUE, 6);
191
177
  gtk_box_pack_start (GTK_BOX (hbox), vbox, FALSE, FALSE, 0);
192
178
  gtk_widget_show (vbox);
193
179
 
200
186
  gtk_container_add (GTK_CONTAINER (editor->add_button), image);
201
187
  gtk_widget_show (image);
202
188
 
203
 
  gimp_help_set_help_data (editor->add_button,
204
 
                           _("Add the selected filter to the list of "
205
 
                             "active filters."), NULL);
206
 
 
207
189
  g_signal_connect (editor->add_button, "clicked",
208
190
                    G_CALLBACK (gimp_color_display_editor_add_clicked),
209
191
                    editor);
217
199
  gtk_container_add (GTK_CONTAINER (editor->remove_button), image);
218
200
  gtk_widget_show (image);
219
201
 
220
 
  gimp_help_set_help_data (editor->remove_button,
221
 
                           _("Remove the selected filter from the list of "
222
 
                             "active filters."), NULL);
223
 
 
224
202
  g_signal_connect (editor->remove_button, "clicked",
225
203
                    G_CALLBACK (gimp_color_display_editor_remove_clicked),
226
204
                    editor);
254
232
  gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scrolled_win),
255
233
                                       GTK_SHADOW_IN);
256
234
  gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scrolled_win),
257
 
                                  GTK_POLICY_AUTOMATIC,
258
 
                                  GTK_POLICY_AUTOMATIC);
 
235
                                  GTK_POLICY_AUTOMATIC,
 
236
                                  GTK_POLICY_AUTOMATIC);
259
237
  gtk_container_add (GTK_CONTAINER (ed), scrolled_win);
260
238
  gtk_widget_show (scrolled_win);
261
239
 
262
240
  editor->dest = gtk_list_store_new (N_DEST_COLUMNS,
263
241
                                     G_TYPE_BOOLEAN,
264
242
                                     G_TYPE_STRING,
 
243
                                     G_TYPE_STRING,
265
244
                                     GIMP_TYPE_COLOR_DISPLAY);
266
245
  tv = gtk_tree_view_new_with_model (GTK_TREE_MODEL (editor->dest));
267
246
  g_object_unref (editor->dest);
285
264
  gtk_tree_view_column_set_widget (column, image);
286
265
  gtk_widget_show (image);
287
266
 
288
 
  gtk_tree_view_insert_column_with_attributes (GTK_TREE_VIEW (tv),
289
 
                                               1, _("Active Filters"),
290
 
                                               gtk_cell_renderer_text_new (),
291
 
                                               "text", DEST_COLUMN_NAME,
292
 
                                               NULL);
 
267
  column = gtk_tree_view_column_new ();
 
268
  gtk_tree_view_column_set_title (column, _("Active Filters"));
 
269
  gtk_tree_view_append_column (GTK_TREE_VIEW (tv), column);
 
270
 
 
271
  rend = gtk_cell_renderer_pixbuf_new ();
 
272
  gtk_tree_view_column_pack_start (column, rend, FALSE);
 
273
  gtk_tree_view_column_set_attributes (column, rend,
 
274
                                       "stock-id", DEST_COLUMN_ICON,
 
275
                                       NULL);
 
276
 
 
277
  rend = gtk_cell_renderer_text_new ();
 
278
  gtk_tree_view_column_pack_start (column, rend, TRUE);
 
279
  gtk_tree_view_column_set_attributes (column, rend,
 
280
                                       "text", DEST_COLUMN_NAME,
 
281
                                       NULL);
293
282
 
294
283
  gtk_container_add (GTK_CONTAINER (scrolled_win), tv);
295
284
  gtk_widget_show (tv);
302
291
 
303
292
  /*  the config frame  */
304
293
 
 
294
  vbox = gtk_vbox_new (FALSE, 6);
 
295
  gtk_paned_pack2 (GTK_PANED (paned), vbox, TRUE, FALSE);
 
296
  gtk_widget_show (vbox);
 
297
 
 
298
  hbox = gtk_hbox_new (FALSE, 0);
 
299
  gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
 
300
  gtk_widget_show (hbox);
 
301
 
305
302
  editor->config_frame = gimp_frame_new (NULL);
306
 
  gtk_box_pack_start (GTK_BOX (editor), editor->config_frame, TRUE, TRUE, 0);
 
303
  gtk_box_pack_start (GTK_BOX (vbox), editor->config_frame, TRUE, TRUE, 0);
307
304
  gtk_widget_show (editor->config_frame);
308
305
 
309
306
  editor->config_box = gtk_vbox_new (FALSE, 6);
370
367
      gtk_list_store_append (editor->src, &iter);
371
368
 
372
369
      gtk_list_store_set (editor->src, &iter,
 
370
                          SRC_COLUMN_ICON, display_class->stock_id,
373
371
                          SRC_COLUMN_NAME, display_class->name,
374
372
                          SRC_COLUMN_TYPE, display_types[i],
375
373
                          -1);
385
383
      GtkTreeIter       iter;
386
384
      gboolean          enabled;
387
385
      const gchar      *name;
 
386
      const gchar      *stock_id;
388
387
 
389
388
      enabled = gimp_color_display_get_enabled (display);
390
389
 
391
 
      name = GIMP_COLOR_DISPLAY_GET_CLASS (display)->name;
 
390
      name     = GIMP_COLOR_DISPLAY_GET_CLASS (display)->name;
 
391
      stock_id = GIMP_COLOR_DISPLAY_GET_CLASS (display)->stock_id;
392
392
 
393
393
      gtk_list_store_append (editor->dest, &iter);
394
394
 
395
395
      gtk_list_store_set (editor->dest, &iter,
396
396
                          DEST_COLUMN_ENABLED, enabled,
 
397
                          DEST_COLUMN_ICON,    stock_id,
397
398
                          DEST_COLUMN_NAME,    name,
398
399
                          DEST_COLUMN_FILTER,  display,
399
400
                          -1);
426
427
  if (gtk_tree_selection_get_selected (editor->src_sel, &model, &iter))
427
428
    {
428
429
      GimpColorDisplay *display;
429
 
      GValue            val = { 0, };
430
 
 
431
 
      gtk_tree_model_get_value (model, &iter, SRC_COLUMN_TYPE, &val);
432
 
 
433
 
      display = gimp_color_display_new ((GType) g_value_get_pointer (&val));
434
 
 
435
 
      g_value_unset (&val);
 
430
      GType             type;
 
431
 
 
432
      gtk_tree_model_get (model, &iter, SRC_COLUMN_TYPE, &type, -1);
 
433
 
 
434
      display = gimp_color_display_new (type);
436
435
 
437
436
      if (display)
438
437
        {
480
479
{
481
480
  GtkTreeModel *model;
482
481
  GtkTreeIter   iter;
 
482
  gchar        *tip  = NULL;
483
483
  const gchar  *name = NULL;
484
484
 
485
485
  if (gtk_tree_selection_get_selected (sel, &model, &iter))
490
490
 
491
491
      name = g_value_get_string (&val);
492
492
 
 
493
      tip = g_strdup_printf (_("Add '%s' to the list of active filters"), name);
 
494
 
493
495
      g_value_unset (&val);
494
496
    }
495
497
 
496
498
  gtk_widget_set_sensitive (editor->add_button, name != NULL);
 
499
 
 
500
  gimp_help_set_help_data (editor->add_button, tip, NULL);
 
501
  g_free (tip);
497
502
}
498
503
 
499
504
static void
503
508
  GtkTreeModel     *model;
504
509
  GtkTreeIter       iter;
505
510
  GimpColorDisplay *display = NULL;
 
511
  gchar            *tip     = NULL;
506
512
 
507
513
  if (editor->selected)
508
514
    {
520
526
      display = g_value_get_object (&val);
521
527
 
522
528
      g_value_unset (&val);
 
529
 
 
530
      tip = g_strdup_printf (_("Remove '%s' from the list of active filters"),
 
531
                             GIMP_COLOR_DISPLAY_GET_CLASS (display)->name);
523
532
    }
524
533
 
 
534
  gimp_help_set_help_data (editor->remove_button, tip, NULL);
 
535
  g_free (tip);
 
536
 
525
537
  gtk_widget_set_sensitive (editor->remove_button, display != NULL);
526
538
  gtk_widget_set_sensitive (editor->reset_button,  display != NULL);
527
539
 
531
543
 
532
544
  if (display)
533
545
    {
534
 
      gchar *str;
535
 
 
536
546
      editor->selected = display;
537
547
 
538
548
      g_object_add_weak_pointer (G_OBJECT (display),
540
550
 
541
551
      editor->config_widget = gimp_color_display_configure (display);
542
552
 
543
 
      str = g_strdup_printf (_("Configure selected filter: %s"),
544
 
                             GIMP_COLOR_DISPLAY_GET_CLASS (display)->name);
545
 
      gtk_frame_set_label (GTK_FRAME (editor->config_frame), str);
546
 
      g_free (str);
 
553
      gtk_frame_set_label (GTK_FRAME (editor->config_frame),
 
554
                           GIMP_COLOR_DISPLAY_GET_CLASS (display)->name);
547
555
    }
548
556
  else
549
557
    {
550
 
      editor->config_widget = gtk_label_new (_("No filter selected"));
551
 
      gtk_widget_set_sensitive (editor->config_widget, FALSE);
 
558
      editor->config_widget = NULL;
552
559
 
553
560
      gtk_frame_set_label (GTK_FRAME (editor->config_frame),
554
 
                           _("Configure selected filter"));
 
561
                           _("No filter selected"));
555
562
    }
556
563
 
557
564
  if (editor->config_widget)
576
583
  GtkTreeIter  iter;
577
584
  gboolean     enabled;
578
585
  const gchar *name;
 
586
  const gchar *stock_id;
579
587
 
580
588
  enabled = gimp_color_display_get_enabled (display);
581
589
 
582
 
  name = GIMP_COLOR_DISPLAY_GET_CLASS (display)->name;
 
590
  name     = GIMP_COLOR_DISPLAY_GET_CLASS (display)->name;
 
591
  stock_id = GIMP_COLOR_DISPLAY_GET_CLASS (display)->stock_id;
583
592
 
584
593
  gtk_list_store_insert (editor->dest, &iter, position);
585
594
 
586
595
  gtk_list_store_set (editor->dest, &iter,
587
596
                      DEST_COLUMN_ENABLED, enabled,
 
597
                      DEST_COLUMN_ICON,    stock_id,
588
598
                      DEST_COLUMN_NAME,    name,
589
599
                      DEST_COLUMN_FILTER,  display,
590
600
                      -1);