289
get_button_color (GtkWidget *button, GdkColor *color)
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;
299
get_button_colors(PreferencesDialog_t *dialog, ColorSelData_t *colors)
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);
308
set_button_color (GtkWidget *button, GdkColor *color)
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);
266
317
set_button_colors(PreferencesDialog_t *dialog, ColorSelData_t *colors)
268
gdk_window_set_background(dialog->normal_fg->window,
270
gdk_window_clear(dialog->normal_fg->window);
271
gdk_window_set_background(dialog->normal_bg->window,
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);
283
select_color_cancel(GtkWidget *widget, gpointer data)
285
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
286
gtk_widget_hide(param->color_sel_dlg);
287
set_button_colors(param, ¶m->old_colors);
291
select_color_ok(GtkWidget *widget, gpointer data)
293
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
294
param->old_colors = param->new_colors;
295
gtk_widget_hide(param->color_sel_dlg);
298
static void (*_color_changed_func)(GtkWidget *widget, gpointer data);
301
color_changed(GtkWidget *widget, gpointer data)
303
(*_color_changed_func)(widget, data);
307
change_color(PreferencesDialog_t *param, GtkWidget *button,
310
GdkColormap *colormap;
311
GtkColorSelection *colorsel = GTK_COLOR_SELECTION(param->color_sel);
313
gtk_color_selection_get_current_color(colorsel, gdk_color);
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);
322
normal_fg_color_changed(GtkWidget *widget, gpointer data)
324
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
325
change_color(param, param->normal_fg, ¶m->new_colors.normal_fg);
329
normal_bg_color_changed(GtkWidget *widget, gpointer data)
331
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
332
change_color(param, param->normal_bg, ¶m->new_colors.normal_bg);
336
selected_fg_color_changed(GtkWidget *widget, gpointer data)
338
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
339
change_color(param, param->selected_fg, ¶m->new_colors.selected_fg);
343
selected_bg_color_changed(GtkWidget *widget, gpointer data)
345
PreferencesDialog_t *param = (PreferencesDialog_t*) data;
346
change_color(param, param->selected_bg, ¶m->new_colors.selected_bg);
350
area_event(GtkWidget *widget, GdkEvent *event, PreferencesDialog_t *param,
352
void (*color_changed_func)(GtkWidget *widget, gpointer data))
354
if (event->type != GDK_BUTTON_PRESS)
357
if (!param->color_sel_dlg) {
358
GtkWidget *dialog = gtk_color_selection_dialog_new( _("Select Color"));
360
param->color_sel_dlg = dialog;
362
param->color_sel = GTK_COLOR_SELECTION_DIALOG(
363
param->color_sel_dlg)->colorsel;
365
g_signal_connect(param->color_sel, "color_changed",
366
G_CALLBACK(color_changed), (gpointer) param);
368
g_signal_connect(GTK_COLOR_SELECTION_DIALOG(dialog)->ok_button,
370
G_CALLBACK(select_color_ok), (gpointer) param);
372
g_signal_connect(GTK_COLOR_SELECTION_DIALOG(dialog)->cancel_button,
374
G_CALLBACK(select_color_cancel), (gpointer) param);
377
_color_changed_func = color_changed_func;
379
gtk_color_selection_set_current_color(GTK_COLOR_SELECTION(param->color_sel),
382
gtk_widget_show(param->color_sel_dlg);
387
edit_normal_fg(GtkWidget *widget, GdkEvent *event, PreferencesDialog_t *param)
389
return area_event(widget, event, param, ¶m->old_data->colors.normal_fg,
390
normal_fg_color_changed);
394
edit_normal_bg(GtkWidget *widget, GdkEvent *event, PreferencesDialog_t *param)
396
return area_event(widget, event, param, ¶m->old_data->colors.normal_bg,
397
normal_bg_color_changed);
401
edit_selected_fg(GtkWidget *widget, GdkEvent *event,
402
PreferencesDialog_t *param)
404
return area_event(widget, event, param,
405
¶m->old_data->colors.selected_fg,
406
selected_fg_color_changed);
410
edit_selected_bg(GtkWidget *widget, GdkEvent *event,
411
PreferencesDialog_t *param)
413
return area_event(widget, event, param,
414
¶m->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);
418
325
static GtkWidget*
497
404
static GtkWidget*
498
405
create_color_field(PreferencesDialog_t *data, GtkWidget *table, gint row,
499
gint col, GCallback func)
501
GtkWidget *area = gtk_drawing_area_new();
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,
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,
414
gtk_widget_show (area);
516
422
GtkWidget *table = create_tab(notebook, _("Colors"), 2, 3);
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);
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);
531
433
#ifdef _NOT_READY_YET_