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

« back to all changes in this revision

Viewing changes to plug-ins/imagemap/imap_preferences.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:
3
3
 *
4
4
 * Generates clickable image maps.
5
5
 *
6
 
 * Copyright (C) 1998-2004 Maurits Rijk  m.rijk@chello.nl
 
6
 * Copyright (C) 1998-2005 Maurits Rijk  m.rijk@chello.nl
7
7
 *
8
8
 * This program is free software; you can redistribute it and/or modify
9
9
 * it under the terms of the GNU General Public License as published by
23
23
 
24
24
#include "config.h"
25
25
 
26
 
#include <stdio.h>
27
26
#include <stdlib.h>
28
27
#include <string.h>
29
28
 
30
 
#include <gtk/gtk.h>
 
29
#include <glib/gstdio.h>
31
30
 
32
31
#include "libgimp/gimp.h"
33
 
#include "libgimpwidgets/gimpwidgets.h"
 
32
#include "libgimp/gimpui.h"
34
33
 
35
34
#include "imap_command.h"
36
35
#include "imap_file.h"
43
42
 
44
43
#include "libgimp/stdplugins-intl.h"
45
44
 
 
45
typedef struct {
 
46
   DefaultDialog_t      *dialog;
 
47
   GtkWidget            *notebook;
 
48
   GtkWidget            *ncsa;
 
49
   GtkWidget            *cern;
 
50
   GtkWidget            *csim;
 
51
   GtkWidget            *prompt_for_area_info;
 
52
   GtkWidget            *require_default_url;
 
53
   GtkWidget            *show_area_handle;
 
54
   GtkWidget            *keep_circles_round;
 
55
   GtkWidget            *show_url_tip;
 
56
   GtkWidget            *use_doublesized;
 
57
 
 
58
   GtkWidget            *undo_levels;
 
59
   GtkWidget            *mru_size;
 
60
 
 
61
   GtkWidget            *normal_fg;
 
62
   GtkWidget            *normal_bg;
 
63
   GtkWidget            *selected_fg;
 
64
   GtkWidget            *selected_bg;
 
65
 
 
66
   GtkWidget            *threshold;
 
67
   GtkWidget            *auto_convert;
 
68
 
 
69
   PreferencesData_t    *old_data;
 
70
} PreferencesDialog_t;
 
71
 
 
72
static void get_button_colors (PreferencesDialog_t *dialog,
 
73
                               ColorSelData_t *colors);
 
74
 
46
75
static gint
47
76
parse_map_type(void)
48
77
{
71
100
static void
72
101
parse_color(GdkColor *gdk_color)
73
102
{
74
 
   gint color[3];
75
 
 
76
 
   color[0] = parse_int();
77
 
   color[1] = parse_int();
78
 
   color[2] = parse_int();
79
 
 
80
 
   gdk_color->red = (guint16) color[0];
81
 
   gdk_color->green = (guint16) color[1];
82
 
   gdk_color->blue = (guint16) color[2];
 
103
   gdk_color->red = (guint16) parse_int();
 
104
   gdk_color->green = (guint16) parse_int();
 
105
   gdk_color->blue = (guint16) parse_int();
83
106
}
84
107
 
85
108
static void
142
165
   char buf[256];
143
166
   gchar *filename;
144
167
 
145
 
   filename = g_build_filename (gimp_directory (), "imagemaprc", NULL);
 
168
   filename = gimp_personal_rc_file ("imagemaprc");
146
169
 
147
 
   in = fopen(filename, "r");
 
170
   in = g_fopen(filename, "r");
148
171
   g_free(filename);
149
172
   if (in) {
150
173
      while (fgets(buf, sizeof(buf), in)) {
165
188
   gchar *filename;
166
189
   ColorSelData_t *colors = &data->colors;
167
190
 
168
 
   filename = g_build_filename (gimp_directory (), "imagemaprc", NULL);
 
191
   filename = gimp_personal_rc_file ("imagemaprc");
169
192
 
170
 
   out = fopen(filename, "w");
 
193
   out = g_fopen(filename, "w");
171
194
   if (out) {
172
 
      fprintf(out, "# Imagemap plug-in resource file\n\n");
 
195
      fprintf(out, "# Image map plug-in resource file\n\n");
173
196
      if (data->default_map_type == NCSA)
174
197
         fprintf(out, "(default-map-type ncsa)\n");
175
198
      else if (data->default_map_type == CERN)
251
274
   menu_build_mru_items(mru);
252
275
   command_list_set_undo_level(old_data->undo_levels);
253
276
 
254
 
   *colors = param->new_colors;
 
277
   get_button_colors (param, colors);
255
278
 
256
279
   gdk_gc_set_foreground(old_data->normal_gc, &colors->normal_fg);
257
280
   gdk_gc_set_background(old_data->normal_gc, &colors->normal_bg);
263
286
}
264
287
 
265
288
static void
 
289
get_button_color (GtkWidget *button, GdkColor *color)
 
290
{
 
291
  GimpRGB rgb;
 
292
  gimp_color_button_get_color (GIMP_COLOR_BUTTON (button), &rgb);
 
293
  color->red = rgb.r * 0xffff;
 
294
  color->green = rgb.g * 0xffff;
 
295
  color->blue = rgb.b * 0xffff;
 
296
}
 
297
 
 
298
static void
 
299
get_button_colors(PreferencesDialog_t *dialog, ColorSelData_t *colors)
 
300
{
 
301
  get_button_color (dialog->normal_fg, &colors->normal_fg);
 
302
  get_button_color (dialog->normal_bg, &colors->normal_bg);
 
303
  get_button_color (dialog->selected_fg, &colors->selected_fg);
 
304
  get_button_color (dialog->selected_bg, &colors->selected_bg);
 
305
}
 
306
 
 
307
static void
 
308
set_button_color (GtkWidget *button, GdkColor *color)
 
309
{
 
310
  GimpRGB rgb;
 
311
  gimp_rgb_set (&rgb, color->red, color->green, color->blue);
 
312
  gimp_rgb_multiply (&rgb, 1.0 / 0xffff);
 
313
  gimp_color_button_set_color (GIMP_COLOR_BUTTON (button), &rgb);
 
314
}
 
315
 
 
316
static void
266
317
set_button_colors(PreferencesDialog_t *dialog, ColorSelData_t *colors)
267
318
{
268
 
   gdk_window_set_background(dialog->normal_fg->window,
269
 
                             &colors->normal_fg);
270
 
   gdk_window_clear(dialog->normal_fg->window);
271
 
   gdk_window_set_background(dialog->normal_bg->window,
272
 
                             &colors->normal_bg);
273
 
   gdk_window_clear(dialog->normal_bg->window);
274
 
   gdk_window_set_background(dialog->selected_fg->window,
275
 
                             &colors->selected_fg);
276
 
   gdk_window_clear(dialog->selected_fg->window);
277
 
   gdk_window_set_background(dialog->selected_bg->window,
278
 
                             &colors->selected_bg);
279
 
   gdk_window_clear(dialog->selected_bg->window);
280
 
}
281
 
 
282
 
static void
283
 
select_color_cancel(GtkWidget *widget, gpointer data)
284
 
{
285
 
   PreferencesDialog_t *param = (PreferencesDialog_t*) data;
286
 
   gtk_widget_hide(param->color_sel_dlg);
287
 
   set_button_colors(param, &param->old_colors);
288
 
}
289
 
 
290
 
static void
291
 
select_color_ok(GtkWidget *widget, gpointer data)
292
 
{
293
 
   PreferencesDialog_t *param = (PreferencesDialog_t*) data;
294
 
   param->old_colors = param->new_colors;
295
 
   gtk_widget_hide(param->color_sel_dlg);
296
 
}
297
 
 
298
 
static void (*_color_changed_func)(GtkWidget *widget, gpointer data);
299
 
 
300
 
static void
301
 
color_changed(GtkWidget *widget, gpointer data)
302
 
{
303
 
   (*_color_changed_func)(widget, data);
304
 
}
305
 
 
306
 
static void
307
 
change_color(PreferencesDialog_t *param, GtkWidget *button,
308
 
             GdkColor *gdk_color)
309
 
{
310
 
   GdkColormap *colormap;
311
 
   GtkColorSelection *colorsel = GTK_COLOR_SELECTION(param->color_sel);
312
 
 
313
 
   gtk_color_selection_get_current_color(colorsel, gdk_color);
314
 
 
315
 
   colormap = gdk_drawable_get_colormap(button->window);
316
 
   gdk_colormap_alloc_color(colormap, gdk_color, FALSE, TRUE);
317
 
   gdk_window_set_background(button->window, gdk_color);
318
 
   gdk_window_clear(button->window);
319
 
}
320
 
 
321
 
static void
322
 
normal_fg_color_changed(GtkWidget *widget, gpointer data)
323
 
{
324
 
   PreferencesDialog_t *param = (PreferencesDialog_t*) data;
325
 
   change_color(param, param->normal_fg, &param->new_colors.normal_fg);
326
 
}
327
 
 
328
 
static void
329
 
normal_bg_color_changed(GtkWidget *widget, gpointer data)
330
 
{
331
 
   PreferencesDialog_t *param = (PreferencesDialog_t*) data;
332
 
   change_color(param, param->normal_bg, &param->new_colors.normal_bg);
333
 
}
334
 
 
335
 
static void
336
 
selected_fg_color_changed(GtkWidget *widget, gpointer data)
337
 
{
338
 
   PreferencesDialog_t *param = (PreferencesDialog_t*) data;
339
 
   change_color(param, param->selected_fg, &param->new_colors.selected_fg);
340
 
}
341
 
 
342
 
static void
343
 
selected_bg_color_changed(GtkWidget *widget, gpointer data)
344
 
{
345
 
   PreferencesDialog_t *param = (PreferencesDialog_t*) data;
346
 
   change_color(param, param->selected_bg, &param->new_colors.selected_bg);
347
 
}
348
 
 
349
 
static gint
350
 
area_event(GtkWidget *widget, GdkEvent *event, PreferencesDialog_t *param,
351
 
           GdkColor *gdk_color,
352
 
           void (*color_changed_func)(GtkWidget *widget, gpointer data))
353
 
{
354
 
   if (event->type != GDK_BUTTON_PRESS)
355
 
      return FALSE;
356
 
 
357
 
   if (!param->color_sel_dlg) {
358
 
      GtkWidget *dialog = gtk_color_selection_dialog_new( _("Select Color"));
359
 
 
360
 
      param->color_sel_dlg = dialog;
361
 
 
362
 
      param->color_sel = GTK_COLOR_SELECTION_DIALOG(
363
 
         param->color_sel_dlg)->colorsel;
364
 
 
365
 
      g_signal_connect(param->color_sel, "color_changed",
366
 
                       G_CALLBACK(color_changed), (gpointer) param);
367
 
 
368
 
      g_signal_connect(GTK_COLOR_SELECTION_DIALOG(dialog)->ok_button,
369
 
                       "clicked",
370
 
                       G_CALLBACK(select_color_ok), (gpointer) param);
371
 
 
372
 
      g_signal_connect(GTK_COLOR_SELECTION_DIALOG(dialog)->cancel_button,
373
 
                       "clicked",
374
 
                       G_CALLBACK(select_color_cancel), (gpointer) param);
375
 
   }
376
 
 
377
 
   _color_changed_func = color_changed_func;
378
 
 
379
 
   gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(param->color_sel),
380
 
                                         gdk_color);
381
 
 
382
 
   gtk_widget_show(param->color_sel_dlg);
383
 
   return TRUE;
384
 
}
385
 
 
386
 
static gint
387
 
edit_normal_fg(GtkWidget *widget, GdkEvent *event, PreferencesDialog_t *param)
388
 
{
389
 
   return area_event(widget, event, param, &param->old_data->colors.normal_fg,
390
 
                     normal_fg_color_changed);
391
 
}
392
 
 
393
 
static gint
394
 
edit_normal_bg(GtkWidget *widget, GdkEvent *event, PreferencesDialog_t *param)
395
 
{
396
 
   return area_event(widget, event, param, &param->old_data->colors.normal_bg,
397
 
                     normal_bg_color_changed);
398
 
}
399
 
 
400
 
static gint
401
 
edit_selected_fg(GtkWidget *widget, GdkEvent *event,
402
 
                 PreferencesDialog_t *param)
403
 
{
404
 
   return area_event(widget, event, param,
405
 
                     &param->old_data->colors.selected_fg,
406
 
                     selected_fg_color_changed);
407
 
}
408
 
 
409
 
static gint
410
 
edit_selected_bg(GtkWidget *widget, GdkEvent *event,
411
 
                 PreferencesDialog_t *param)
412
 
{
413
 
   return area_event(widget, event, param,
414
 
                     &param->old_data->colors.selected_bg,
415
 
                     selected_bg_color_changed);
 
319
  set_button_color (dialog->normal_fg, &colors->normal_fg);
 
320
  set_button_color (dialog->normal_bg, &colors->normal_bg);
 
321
  set_button_color (dialog->selected_fg, &colors->selected_fg);
 
322
  set_button_color (dialog->selected_bg, &colors->selected_bg);
416
323
}
417
324
 
418
325
static GtkWidget*
485
392
   GtkWidget *label;
486
393
 
487
394
   label = create_label_in_table(table, 0, 0,
488
 
                                 _("Number of _Undo levels (1 - 99):"));
 
395
                                 _("Number of _undo levels (1 - 99):"));
489
396
   data->undo_levels = create_spin_button_in_table(table, label, 0, 1, 1, 1,
490
397
                                                   99);
491
398
 
496
403
 
497
404
static GtkWidget*
498
405
create_color_field(PreferencesDialog_t *data, GtkWidget *table, gint row,
499
 
                   gint col, GCallback func)
 
406
                   gint col)
500
407
{
501
 
   GtkWidget *area = gtk_drawing_area_new();
502
 
 
503
 
   gtk_widget_set_size_request(area, 16, 8);
504
 
   gtk_widget_set_events(area, GDK_BUTTON_PRESS_MASK);
505
 
   gtk_table_attach_defaults(GTK_TABLE(table), area, col, col + 1, row,
506
 
                             row + 1);
507
 
   g_signal_connect(area, "event", func, (gpointer) data);
508
 
   gtk_widget_show(area);
 
408
   GimpRGB color = {0.0, 0.0, 0.0, 1.0};
 
409
   GtkWidget *area = gimp_color_button_new (_("Select Color"), 16, 8, &color,
 
410
                                            GIMP_COLOR_AREA_FLAT);
 
411
   gimp_color_button_set_update (GIMP_COLOR_BUTTON (area), TRUE);
 
412
   gtk_table_attach_defaults (GTK_TABLE (table), area, col, col + 1, row,
 
413
                              row + 1);
 
414
   gtk_widget_show (area);
509
415
 
510
416
   return area;
511
417
}
516
422
   GtkWidget *table = create_tab(notebook, _("Colors"), 2, 3);
517
423
 
518
424
   create_label_in_table(table, 0, 0, _("Normal:"));
519
 
   data->normal_fg = create_color_field(data, table, 0, 1,
520
 
                                        G_CALLBACK(edit_normal_fg));
521
 
   data->normal_bg = create_color_field(data, table, 0, 2,
522
 
                                        G_CALLBACK(edit_normal_bg));
 
425
   data->normal_fg = create_color_field(data, table, 0, 1);
 
426
   data->normal_bg = create_color_field(data, table, 0, 2);
523
427
 
524
428
   create_label_in_table(table, 1, 0, _("Selected:"));
525
 
   data->selected_fg = create_color_field(data, table, 1, 1,
526
 
                                          G_CALLBACK(edit_selected_fg));
527
 
   data->selected_bg = create_color_field(data, table, 1, 2,
528
 
                                          G_CALLBACK(edit_selected_bg));
 
429
   data->selected_fg = create_color_field(data, table, 1, 1);
 
430
   data->selected_bg = create_color_field(data, table, 1, 2);
529
431
}
530
432
 
531
433
#ifdef _NOT_READY_YET_
542
444
}
543
445
#endif
544
446
 
545
 
static void
546
 
switch_page(GtkWidget *widget, GtkNotebookPage *page, gint page_num,
547
 
            gpointer data)
548
 
{
549
 
   if (page_num == 2) {
550
 
      PreferencesDialog_t *param = (PreferencesDialog_t*) data;
551
 
      set_button_colors(param, &param->old_colors);
552
 
   }
553
 
}
554
 
 
555
447
static PreferencesDialog_t*
556
448
create_preferences_dialog(void)
557
449
{
559
451
   DefaultDialog_t *dialog;
560
452
   GtkWidget *notebook;
561
453
 
562
 
   data->color_sel_dlg = NULL;
563
454
   data->dialog = dialog = make_default_dialog( _("General Preferences"));
564
455
   default_dialog_set_ok_cb(dialog, preferences_ok_cb, (gpointer) data);
565
456
 
566
457
   data->notebook = notebook = gtk_notebook_new();
567
 
   g_signal_connect_after(notebook, "switch_page",
568
 
                          G_CALLBACK(switch_page), (gpointer) data);
569
 
 
570
458
   gtk_box_pack_start (GTK_BOX (data->dialog->vbox), notebook, TRUE, TRUE, 0);
571
459
   create_general_tab(data, notebook);
572
460
   create_menu_tab(data, notebook);
591
479
   }
592
480
   gtk_notebook_set_current_page(GTK_NOTEBOOK(dialog->notebook), 0);
593
481
   dialog->old_data = old_data = get_preferences();
594
 
   dialog->new_colors = dialog->old_colors = old_data->colors;
595
482
 
596
483
   if (old_data->default_map_type == CERN)
597
484
      map_type = dialog->cern;
620
507
   gtk_spin_button_set_value(GTK_SPIN_BUTTON(dialog->mru_size),
621
508
                             old_data->mru_size);
622
509
 
 
510
   set_button_colors(dialog, &old_data->colors);
 
511
 
623
512
   default_dialog_show(dialog->dialog);
624
513
}