From c69e85c8c9b4316ebeb326fa1ea7e94d430319ea Mon Sep 17 00:00:00 2001 From: Sven Neumann Date: Sat, 29 Jan 2000 23:06:06 +0000 Subject: [PATCH] app/brush_select.c create the dialog at mouse position if not the main * app/brush_select.c * app/gradient_select.c: create the dialog at mouse position if not the main dialog (which is session-managed) * app/convert.c: small UI changes * app/gradient.c: don't include session.h * app/session.c: the gradient_select dialog is not the gradient_editor --Sven --- ChangeLog | 14 +- app/brush_select.c | 2 +- app/convert.c | 236 +++++++++++-------------------- app/core/gimpimage-convert.c | 236 +++++++++++-------------------- app/gimpimage-convert.c | 236 +++++++++++-------------------- app/gradient.c | 1 - app/gradient_editor.c | 1 - app/gradient_select.c | 2 +- app/gui/brush-select.c | 2 +- app/gui/gradient-editor.c | 1 - app/gui/gradient-select.c | 2 +- app/gui/pattern-select.c | 2 +- app/gui/session.c | 2 +- app/pattern_select.c | 2 +- app/session.c | 2 +- app/widgets/gimpgradienteditor.c | 1 - 16 files changed, 264 insertions(+), 478 deletions(-) diff --git a/ChangeLog b/ChangeLog index f6f56702e4..4f42d8411e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +Sun Jan 30 21:54:42 CET 2000 Sven Neumann + + * app/brush_select.c + * app/gradient_select.c: create the dialog at mouse position if not + the main dialog (which is session-managed) + + * app/convert.c: small UI changes + + * app/gradient.c: don't include session.h + + * app/session.c: the gradient_select dialog is not the gradient_editor + 2000-01-30 Michael Natterer * plug-ins/FractalExplorer/Dialogs.c: the "blue" variable should @@ -36,7 +48,7 @@ Sat Jan 29 15:40:01 CET 2000 Sven Neumann * app/convert.c * app/palette_select.c * app/palette_select.h: In indexed_conversion dialog, use a - pattern_selector instead op an option_menu. Adam, I hope you like + pattern_selector instead of an option_menu. Adam, I hope you like this... Sat Jan 29 12:06:51 CET 2000 Sven Neumann diff --git a/app/brush_select.c b/app/brush_select.c index 5d09b689b9..5a5c18363f 100644 --- a/app/brush_select.c +++ b/app/brush_select.c @@ -271,7 +271,7 @@ brush_select_new (gchar *title, "brush_selection", gimp_standard_help_func, "dialogs/brush_selection.html", - GTK_WIN_POS_NONE, + title ? GTK_WIN_POS_MOUSE : GTK_WIN_POS_NONE, FALSE, TRUE, FALSE, _("Refresh"), brush_select_refresh_callback, diff --git a/app/convert.c b/app/convert.c index c3ff627357..b8f0f4b51e 100644 --- a/app/convert.c +++ b/app/convert.c @@ -25,6 +25,9 @@ */ /* + * 2000/01/30 - Use palette_selector instead of option_menu for custom + * palette. Use libgimp callback functions. [Sven] + * * 99/09/01 - Created a low-bleed FS-dither option. [Adam] * * 99/08/29 - Deterministic colour dithering to arbitrary palettes. @@ -375,7 +378,6 @@ typedef struct typedef struct { GtkWidget* shell; - GtkWidget* custom_frame; GtkWidget* custom_palette_button; GimpImage* gimage; PaletteSelect* palette_select; @@ -396,11 +398,6 @@ typedef struct static void indexed_ok_callback (GtkWidget *, gpointer); static void indexed_cancel_callback (GtkWidget *, gpointer); -static void indexed_num_cols_update (GtkWidget *, gpointer); -static void indexed_radio_update (GtkWidget *, gpointer); -static void frame_sensitivity_update (GtkWidget *, gpointer); -static void indexed_alphadither_update (GtkWidget *, gpointer); -static void indexed_remdups_update (GtkWidget *, gpointer); static void indexed_custom_palette_button_callback (GtkWidget *widget, gpointer data); static void indexed_palette_select_destroy_callback (GtkWidget *widget, gpointer data); @@ -473,13 +470,13 @@ convert_to_indexed (GimpImage *gimage) GtkObject *adjustment; GtkWidget *spinbutton; GtkWidget *frame; + GtkWidget *custom_frame = NULL; GtkWidget *toggle; GSList *group = NULL; dialog = g_new (IndexedDialog, 1); dialog->gimage = gimage; - dialog->custom_frame = NULL; dialog->custom_palette_button = NULL; dialog->palette_select = NULL; @@ -529,11 +526,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 4); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (NULL, _("Generate optimal palette:")); + toggle = gtk_radio_button_new_with_label (NULL, _("Generate Optimal Palette:")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->makepal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->makepal_flag); @@ -557,47 +554,67 @@ convert_to_indexed (GimpImage *gimage) spinbutton = gimp_spin_button_new (&adjustment, dialog->num_cols, 2, 256, 1, 5, 0, 1, 0); gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", - GTK_SIGNAL_FUNC (indexed_num_cols_update), - dialog); + GTK_SIGNAL_FUNC (gimp_int_adjustment_update), + &(dialog->num_cols)); gtk_box_pack_end (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); - label = gtk_label_new (_("# of colors:")); + label = gtk_label_new (_("# of Colors:")); gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); + gtk_widget_set_sensitive (GTK_WIDGET (spinbutton), dialog->num_cols); + gtk_widget_set_sensitive (GTK_WIDGET (label), dialog->num_cols); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", spinbutton); + gtk_object_set_data (GTK_OBJECT (spinbutton), "set_sensitive", label); + gtk_widget_show (hbox); - if (TRUE /* gimage->base_type == RGB */ ) + /* 'custom' palette from dialog */ + dialog->custom_palette_button = build_palette_button (); + if (dialog->custom_palette_button) { - GtkWidget *button; + /* create the custom_frame here, it'll be added later */ + custom_frame = gtk_frame_new (_("Custom Palette Options")); + gtk_container_set_border_width (GTK_CONTAINER (custom_frame), 2); + + /* The remove-duplicates toggle */ + hbox = gtk_hbox_new (FALSE, 1); + gtk_container_add (GTK_CONTAINER (custom_frame), hbox); + toggle = gtk_check_button_new_with_label (_("Remove Unused Colors from Final Palette")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->remdups); + gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->remdups)); + gtk_widget_show (toggle); + gtk_widget_show (hbox); - dialog->custom_palette_button = button = build_palette_button (); - if (button) - { - /* 'custom' palette from dialog */ - hbox = gtk_hbox_new (FALSE, 4); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Use custom palette")); - group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), - &(dialog->custompal_flag)); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (frame_sensitivity_update), - dialog); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - dialog->custompal_flag); - gtk_widget_show (toggle); + /* 'custom' palette from dialog */ + hbox = gtk_hbox_new (FALSE, 4); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + toggle = gtk_radio_button_new_with_label (group, _("Use Custom Palette:")); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->custompal_flag)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), + dialog->custompal_flag); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", custom_frame); + gtk_widget_show (toggle); + + gtk_signal_connect (GTK_OBJECT (dialog->custom_palette_button), "clicked", + GTK_SIGNAL_FUNC (indexed_custom_palette_button_callback), + dialog); + gtk_box_pack_end (GTK_BOX (hbox), dialog->custom_palette_button, TRUE, TRUE, 0); + gtk_widget_show (dialog->custom_palette_button); + gtk_widget_show (hbox); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (indexed_custom_palette_button_callback), - dialog); - gtk_box_pack_end (GTK_BOX (hbox), button, TRUE, TRUE, 0); - gtk_widget_show (button); - gtk_widget_show (hbox); - } + gtk_widget_set_sensitive (GTK_WIDGET (custom_frame), dialog->custompal_flag); + gtk_widget_set_sensitive (GTK_WIDGET (dialog->custom_palette_button), dialog->custompal_flag); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", custom_frame); + gtk_object_set_data (GTK_OBJECT (custom_frame), "set_sensitive", dialog->custom_palette_button); } if (!UserHasWebPal) @@ -610,11 +627,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); toggle = - gtk_radio_button_new_with_label (group, _("Use WWW-optimised palette")); + gtk_radio_button_new_with_label (group, _("Use WWW-Optimized Palette")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->webpal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->webpal_flag); @@ -626,11 +643,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); toggle = - gtk_radio_button_new_with_label (group, _("Use black/white (1-bit) palette")); + gtk_radio_button_new_with_label (group, _("Use Black/White (1-Bit) Palette")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->monopal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->monopal_flag); @@ -650,11 +667,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (NULL, _("No colour dithering")); + toggle = gtk_radio_button_new_with_label (NULL, _("No Color Dithering")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->nodither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->nodither_flag); @@ -664,11 +681,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Positioned colour dithering")); + toggle = gtk_radio_button_new_with_label (group, _("Positioned Color Dithering")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fixeddither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fixeddither_flag); @@ -678,11 +695,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg colour dithering (reduced colour bleeding)")); + toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg Color Dithering (Reduced Color Bleeding)")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fslowbleeddither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fslowbleeddither_flag); @@ -691,11 +708,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg colour dithering (normal)")); + toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg Color Dithering (Normal)")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fsdither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fsdither_flag); @@ -705,55 +722,23 @@ convert_to_indexed (GimpImage *gimage) /* The alpha-dither toggle */ hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Enable dithering of transparency")); + toggle = gtk_check_button_new_with_label (_("Enable Dithering of Transparency")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->alphadither); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_alphadither_update), - dialog); + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->alphadither)); gtk_widget_show (toggle); gtk_widget_show (hbox); - - frame = gtk_frame_new (_("Custom Palette Options")); - gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); - gtk_widget_show (frame); - - vbox = gtk_vbox_new (FALSE, 1); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); - gtk_container_add (GTK_CONTAINER (frame), vbox); - gtk_widget_show(vbox); - - /* - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Use a maximum of N colours from\nthe selected custom palette")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - dialog->alphadither); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_alphadither_update), - dialog); - gtk_widget_show (toggle); - gtk_widget_show (hbox); - */ - - /* The remove-duplicates toggle */ - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Remove unused colours from final palette")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->remdups); - gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_remdups_update), - dialog); - gtk_widget_show (toggle); - gtk_widget_show (hbox); - - dialog->custom_frame = frame; - gtk_widget_set_sensitive (dialog->custom_frame, dialog->custompal_flag); - gtk_widget_show (frame); - + + /* now add the custom_frame */ + if (custom_frame) + { + gtk_box_pack_start (GTK_BOX (main_vbox), custom_frame, FALSE, FALSE, 0); + gtk_widget_show (custom_frame); + } + /* if the image isn't non-alpha/layered, set the default number of colours to one less than max, to leave room for a transparent index for transparent/animated GIFs */ @@ -936,7 +921,8 @@ indexed_palette_select_destroy_callback (GtkWidget *widget, { IndexedDialog *dialog = (IndexedDialog *)data; - dialog->palette_select = NULL; + if (dialog) + dialog->palette_select = NULL; } static gint @@ -992,66 +978,6 @@ indexed_custom_palette_button_callback (GtkWidget *widget, } -static void -indexed_num_cols_update (GtkWidget *widget, - gpointer data) -{ - ((IndexedDialog *) data)->num_cols = GTK_ADJUSTMENT (widget)->value; -} - -static void -indexed_radio_update (GtkWidget *widget, - gpointer data) -{ - gint *toggle_val; - - toggle_val = (int *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - *toggle_val = TRUE; - else - *toggle_val = FALSE; -} - -static void -frame_sensitivity_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - if (dialog && dialog->custom_frame) - gtk_widget_set_sensitive (dialog->custom_frame, dialog->custompal_flag); -} - -static void -indexed_alphadither_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - dialog->alphadither = TRUE; - else - dialog->alphadither = FALSE; -} - -static void -indexed_remdups_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - dialog->remdups = TRUE; - else - dialog->remdups = FALSE; -} - /**********************************************************/ typedef struct diff --git a/app/core/gimpimage-convert.c b/app/core/gimpimage-convert.c index c3ff627357..b8f0f4b51e 100644 --- a/app/core/gimpimage-convert.c +++ b/app/core/gimpimage-convert.c @@ -25,6 +25,9 @@ */ /* + * 2000/01/30 - Use palette_selector instead of option_menu for custom + * palette. Use libgimp callback functions. [Sven] + * * 99/09/01 - Created a low-bleed FS-dither option. [Adam] * * 99/08/29 - Deterministic colour dithering to arbitrary palettes. @@ -375,7 +378,6 @@ typedef struct typedef struct { GtkWidget* shell; - GtkWidget* custom_frame; GtkWidget* custom_palette_button; GimpImage* gimage; PaletteSelect* palette_select; @@ -396,11 +398,6 @@ typedef struct static void indexed_ok_callback (GtkWidget *, gpointer); static void indexed_cancel_callback (GtkWidget *, gpointer); -static void indexed_num_cols_update (GtkWidget *, gpointer); -static void indexed_radio_update (GtkWidget *, gpointer); -static void frame_sensitivity_update (GtkWidget *, gpointer); -static void indexed_alphadither_update (GtkWidget *, gpointer); -static void indexed_remdups_update (GtkWidget *, gpointer); static void indexed_custom_palette_button_callback (GtkWidget *widget, gpointer data); static void indexed_palette_select_destroy_callback (GtkWidget *widget, gpointer data); @@ -473,13 +470,13 @@ convert_to_indexed (GimpImage *gimage) GtkObject *adjustment; GtkWidget *spinbutton; GtkWidget *frame; + GtkWidget *custom_frame = NULL; GtkWidget *toggle; GSList *group = NULL; dialog = g_new (IndexedDialog, 1); dialog->gimage = gimage; - dialog->custom_frame = NULL; dialog->custom_palette_button = NULL; dialog->palette_select = NULL; @@ -529,11 +526,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 4); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (NULL, _("Generate optimal palette:")); + toggle = gtk_radio_button_new_with_label (NULL, _("Generate Optimal Palette:")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->makepal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->makepal_flag); @@ -557,47 +554,67 @@ convert_to_indexed (GimpImage *gimage) spinbutton = gimp_spin_button_new (&adjustment, dialog->num_cols, 2, 256, 1, 5, 0, 1, 0); gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", - GTK_SIGNAL_FUNC (indexed_num_cols_update), - dialog); + GTK_SIGNAL_FUNC (gimp_int_adjustment_update), + &(dialog->num_cols)); gtk_box_pack_end (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); - label = gtk_label_new (_("# of colors:")); + label = gtk_label_new (_("# of Colors:")); gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); + gtk_widget_set_sensitive (GTK_WIDGET (spinbutton), dialog->num_cols); + gtk_widget_set_sensitive (GTK_WIDGET (label), dialog->num_cols); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", spinbutton); + gtk_object_set_data (GTK_OBJECT (spinbutton), "set_sensitive", label); + gtk_widget_show (hbox); - if (TRUE /* gimage->base_type == RGB */ ) + /* 'custom' palette from dialog */ + dialog->custom_palette_button = build_palette_button (); + if (dialog->custom_palette_button) { - GtkWidget *button; + /* create the custom_frame here, it'll be added later */ + custom_frame = gtk_frame_new (_("Custom Palette Options")); + gtk_container_set_border_width (GTK_CONTAINER (custom_frame), 2); + + /* The remove-duplicates toggle */ + hbox = gtk_hbox_new (FALSE, 1); + gtk_container_add (GTK_CONTAINER (custom_frame), hbox); + toggle = gtk_check_button_new_with_label (_("Remove Unused Colors from Final Palette")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->remdups); + gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->remdups)); + gtk_widget_show (toggle); + gtk_widget_show (hbox); - dialog->custom_palette_button = button = build_palette_button (); - if (button) - { - /* 'custom' palette from dialog */ - hbox = gtk_hbox_new (FALSE, 4); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Use custom palette")); - group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), - &(dialog->custompal_flag)); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (frame_sensitivity_update), - dialog); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - dialog->custompal_flag); - gtk_widget_show (toggle); + /* 'custom' palette from dialog */ + hbox = gtk_hbox_new (FALSE, 4); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + toggle = gtk_radio_button_new_with_label (group, _("Use Custom Palette:")); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->custompal_flag)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), + dialog->custompal_flag); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", custom_frame); + gtk_widget_show (toggle); + + gtk_signal_connect (GTK_OBJECT (dialog->custom_palette_button), "clicked", + GTK_SIGNAL_FUNC (indexed_custom_palette_button_callback), + dialog); + gtk_box_pack_end (GTK_BOX (hbox), dialog->custom_palette_button, TRUE, TRUE, 0); + gtk_widget_show (dialog->custom_palette_button); + gtk_widget_show (hbox); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (indexed_custom_palette_button_callback), - dialog); - gtk_box_pack_end (GTK_BOX (hbox), button, TRUE, TRUE, 0); - gtk_widget_show (button); - gtk_widget_show (hbox); - } + gtk_widget_set_sensitive (GTK_WIDGET (custom_frame), dialog->custompal_flag); + gtk_widget_set_sensitive (GTK_WIDGET (dialog->custom_palette_button), dialog->custompal_flag); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", custom_frame); + gtk_object_set_data (GTK_OBJECT (custom_frame), "set_sensitive", dialog->custom_palette_button); } if (!UserHasWebPal) @@ -610,11 +627,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); toggle = - gtk_radio_button_new_with_label (group, _("Use WWW-optimised palette")); + gtk_radio_button_new_with_label (group, _("Use WWW-Optimized Palette")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->webpal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->webpal_flag); @@ -626,11 +643,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); toggle = - gtk_radio_button_new_with_label (group, _("Use black/white (1-bit) palette")); + gtk_radio_button_new_with_label (group, _("Use Black/White (1-Bit) Palette")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->monopal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->monopal_flag); @@ -650,11 +667,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (NULL, _("No colour dithering")); + toggle = gtk_radio_button_new_with_label (NULL, _("No Color Dithering")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->nodither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->nodither_flag); @@ -664,11 +681,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Positioned colour dithering")); + toggle = gtk_radio_button_new_with_label (group, _("Positioned Color Dithering")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fixeddither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fixeddither_flag); @@ -678,11 +695,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg colour dithering (reduced colour bleeding)")); + toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg Color Dithering (Reduced Color Bleeding)")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fslowbleeddither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fslowbleeddither_flag); @@ -691,11 +708,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg colour dithering (normal)")); + toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg Color Dithering (Normal)")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fsdither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fsdither_flag); @@ -705,55 +722,23 @@ convert_to_indexed (GimpImage *gimage) /* The alpha-dither toggle */ hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Enable dithering of transparency")); + toggle = gtk_check_button_new_with_label (_("Enable Dithering of Transparency")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->alphadither); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_alphadither_update), - dialog); + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->alphadither)); gtk_widget_show (toggle); gtk_widget_show (hbox); - - frame = gtk_frame_new (_("Custom Palette Options")); - gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); - gtk_widget_show (frame); - - vbox = gtk_vbox_new (FALSE, 1); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); - gtk_container_add (GTK_CONTAINER (frame), vbox); - gtk_widget_show(vbox); - - /* - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Use a maximum of N colours from\nthe selected custom palette")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - dialog->alphadither); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_alphadither_update), - dialog); - gtk_widget_show (toggle); - gtk_widget_show (hbox); - */ - - /* The remove-duplicates toggle */ - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Remove unused colours from final palette")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->remdups); - gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_remdups_update), - dialog); - gtk_widget_show (toggle); - gtk_widget_show (hbox); - - dialog->custom_frame = frame; - gtk_widget_set_sensitive (dialog->custom_frame, dialog->custompal_flag); - gtk_widget_show (frame); - + + /* now add the custom_frame */ + if (custom_frame) + { + gtk_box_pack_start (GTK_BOX (main_vbox), custom_frame, FALSE, FALSE, 0); + gtk_widget_show (custom_frame); + } + /* if the image isn't non-alpha/layered, set the default number of colours to one less than max, to leave room for a transparent index for transparent/animated GIFs */ @@ -936,7 +921,8 @@ indexed_palette_select_destroy_callback (GtkWidget *widget, { IndexedDialog *dialog = (IndexedDialog *)data; - dialog->palette_select = NULL; + if (dialog) + dialog->palette_select = NULL; } static gint @@ -992,66 +978,6 @@ indexed_custom_palette_button_callback (GtkWidget *widget, } -static void -indexed_num_cols_update (GtkWidget *widget, - gpointer data) -{ - ((IndexedDialog *) data)->num_cols = GTK_ADJUSTMENT (widget)->value; -} - -static void -indexed_radio_update (GtkWidget *widget, - gpointer data) -{ - gint *toggle_val; - - toggle_val = (int *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - *toggle_val = TRUE; - else - *toggle_val = FALSE; -} - -static void -frame_sensitivity_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - if (dialog && dialog->custom_frame) - gtk_widget_set_sensitive (dialog->custom_frame, dialog->custompal_flag); -} - -static void -indexed_alphadither_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - dialog->alphadither = TRUE; - else - dialog->alphadither = FALSE; -} - -static void -indexed_remdups_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - dialog->remdups = TRUE; - else - dialog->remdups = FALSE; -} - /**********************************************************/ typedef struct diff --git a/app/gimpimage-convert.c b/app/gimpimage-convert.c index c3ff627357..b8f0f4b51e 100644 --- a/app/gimpimage-convert.c +++ b/app/gimpimage-convert.c @@ -25,6 +25,9 @@ */ /* + * 2000/01/30 - Use palette_selector instead of option_menu for custom + * palette. Use libgimp callback functions. [Sven] + * * 99/09/01 - Created a low-bleed FS-dither option. [Adam] * * 99/08/29 - Deterministic colour dithering to arbitrary palettes. @@ -375,7 +378,6 @@ typedef struct typedef struct { GtkWidget* shell; - GtkWidget* custom_frame; GtkWidget* custom_palette_button; GimpImage* gimage; PaletteSelect* palette_select; @@ -396,11 +398,6 @@ typedef struct static void indexed_ok_callback (GtkWidget *, gpointer); static void indexed_cancel_callback (GtkWidget *, gpointer); -static void indexed_num_cols_update (GtkWidget *, gpointer); -static void indexed_radio_update (GtkWidget *, gpointer); -static void frame_sensitivity_update (GtkWidget *, gpointer); -static void indexed_alphadither_update (GtkWidget *, gpointer); -static void indexed_remdups_update (GtkWidget *, gpointer); static void indexed_custom_palette_button_callback (GtkWidget *widget, gpointer data); static void indexed_palette_select_destroy_callback (GtkWidget *widget, gpointer data); @@ -473,13 +470,13 @@ convert_to_indexed (GimpImage *gimage) GtkObject *adjustment; GtkWidget *spinbutton; GtkWidget *frame; + GtkWidget *custom_frame = NULL; GtkWidget *toggle; GSList *group = NULL; dialog = g_new (IndexedDialog, 1); dialog->gimage = gimage; - dialog->custom_frame = NULL; dialog->custom_palette_button = NULL; dialog->palette_select = NULL; @@ -529,11 +526,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 4); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (NULL, _("Generate optimal palette:")); + toggle = gtk_radio_button_new_with_label (NULL, _("Generate Optimal Palette:")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->makepal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->makepal_flag); @@ -557,47 +554,67 @@ convert_to_indexed (GimpImage *gimage) spinbutton = gimp_spin_button_new (&adjustment, dialog->num_cols, 2, 256, 1, 5, 0, 1, 0); gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed", - GTK_SIGNAL_FUNC (indexed_num_cols_update), - dialog); + GTK_SIGNAL_FUNC (gimp_int_adjustment_update), + &(dialog->num_cols)); gtk_box_pack_end (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); - label = gtk_label_new (_("# of colors:")); + label = gtk_label_new (_("# of Colors:")); gtk_box_pack_end (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); + gtk_widget_set_sensitive (GTK_WIDGET (spinbutton), dialog->num_cols); + gtk_widget_set_sensitive (GTK_WIDGET (label), dialog->num_cols); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", spinbutton); + gtk_object_set_data (GTK_OBJECT (spinbutton), "set_sensitive", label); + gtk_widget_show (hbox); - if (TRUE /* gimage->base_type == RGB */ ) + /* 'custom' palette from dialog */ + dialog->custom_palette_button = build_palette_button (); + if (dialog->custom_palette_button) { - GtkWidget *button; + /* create the custom_frame here, it'll be added later */ + custom_frame = gtk_frame_new (_("Custom Palette Options")); + gtk_container_set_border_width (GTK_CONTAINER (custom_frame), 2); + + /* The remove-duplicates toggle */ + hbox = gtk_hbox_new (FALSE, 1); + gtk_container_add (GTK_CONTAINER (custom_frame), hbox); + toggle = gtk_check_button_new_with_label (_("Remove Unused Colors from Final Palette")); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->remdups); + gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->remdups)); + gtk_widget_show (toggle); + gtk_widget_show (hbox); - dialog->custom_palette_button = button = build_palette_button (); - if (button) - { - /* 'custom' palette from dialog */ - hbox = gtk_hbox_new (FALSE, 4); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Use custom palette")); - group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); - gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), - &(dialog->custompal_flag)); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (frame_sensitivity_update), - dialog); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - dialog->custompal_flag); - gtk_widget_show (toggle); + /* 'custom' palette from dialog */ + hbox = gtk_hbox_new (FALSE, 4); + gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); + toggle = gtk_radio_button_new_with_label (group, _("Use Custom Palette:")); + group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); + gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); + gtk_signal_connect (GTK_OBJECT (toggle), "toggled", + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->custompal_flag)); + gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), + dialog->custompal_flag); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", custom_frame); + gtk_widget_show (toggle); + + gtk_signal_connect (GTK_OBJECT (dialog->custom_palette_button), "clicked", + GTK_SIGNAL_FUNC (indexed_custom_palette_button_callback), + dialog); + gtk_box_pack_end (GTK_BOX (hbox), dialog->custom_palette_button, TRUE, TRUE, 0); + gtk_widget_show (dialog->custom_palette_button); + gtk_widget_show (hbox); - gtk_signal_connect (GTK_OBJECT (button), "clicked", - GTK_SIGNAL_FUNC (indexed_custom_palette_button_callback), - dialog); - gtk_box_pack_end (GTK_BOX (hbox), button, TRUE, TRUE, 0); - gtk_widget_show (button); - gtk_widget_show (hbox); - } + gtk_widget_set_sensitive (GTK_WIDGET (custom_frame), dialog->custompal_flag); + gtk_widget_set_sensitive (GTK_WIDGET (dialog->custom_palette_button), dialog->custompal_flag); + gtk_object_set_data (GTK_OBJECT (toggle), "set_sensitive", custom_frame); + gtk_object_set_data (GTK_OBJECT (custom_frame), "set_sensitive", dialog->custom_palette_button); } if (!UserHasWebPal) @@ -610,11 +627,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); toggle = - gtk_radio_button_new_with_label (group, _("Use WWW-optimised palette")); + gtk_radio_button_new_with_label (group, _("Use WWW-Optimized Palette")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->webpal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->webpal_flag); @@ -626,11 +643,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); toggle = - gtk_radio_button_new_with_label (group, _("Use black/white (1-bit) palette")); + gtk_radio_button_new_with_label (group, _("Use Black/White (1-Bit) Palette")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->monopal_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->monopal_flag); @@ -650,11 +667,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (NULL, _("No colour dithering")); + toggle = gtk_radio_button_new_with_label (NULL, _("No Color Dithering")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->nodither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->nodither_flag); @@ -664,11 +681,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Positioned colour dithering")); + toggle = gtk_radio_button_new_with_label (group, _("Positioned Color Dithering")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fixeddither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fixeddither_flag); @@ -678,11 +695,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg colour dithering (reduced colour bleeding)")); + toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg Color Dithering (Reduced Color Bleeding)")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fslowbleeddither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fslowbleeddither_flag); @@ -691,11 +708,11 @@ convert_to_indexed (GimpImage *gimage) hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg colour dithering (normal)")); + toggle = gtk_radio_button_new_with_label (group, _("Floyd-Steinberg Color Dithering (Normal)")); group = gtk_radio_button_group (GTK_RADIO_BUTTON (toggle)); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_radio_update), + GTK_SIGNAL_FUNC (gimp_toggle_button_update), &(dialog->fsdither_flag)); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->fsdither_flag); @@ -705,55 +722,23 @@ convert_to_indexed (GimpImage *gimage) /* The alpha-dither toggle */ hbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Enable dithering of transparency")); + toggle = gtk_check_button_new_with_label (_("Enable Dithering of Transparency")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->alphadither); gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_alphadither_update), - dialog); + GTK_SIGNAL_FUNC (gimp_toggle_button_update), + &(dialog->alphadither)); gtk_widget_show (toggle); gtk_widget_show (hbox); - - frame = gtk_frame_new (_("Custom Palette Options")); - gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); - gtk_widget_show (frame); - - vbox = gtk_vbox_new (FALSE, 1); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 2); - gtk_container_add (GTK_CONTAINER (frame), vbox); - gtk_widget_show(vbox); - - /* - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Use a maximum of N colours from\nthe selected custom palette")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), - dialog->alphadither); - gtk_box_pack_start (GTK_BOX (hbox), toggle, TRUE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_alphadither_update), - dialog); - gtk_widget_show (toggle); - gtk_widget_show (hbox); - */ - - /* The remove-duplicates toggle */ - hbox = gtk_hbox_new (FALSE, 1); - gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); - toggle = gtk_check_button_new_with_label (_("Remove unused colours from final palette")); - gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dialog->remdups); - gtk_box_pack_start (GTK_BOX (hbox), toggle, FALSE, FALSE, 0); - gtk_signal_connect (GTK_OBJECT (toggle), "toggled", - GTK_SIGNAL_FUNC (indexed_remdups_update), - dialog); - gtk_widget_show (toggle); - gtk_widget_show (hbox); - - dialog->custom_frame = frame; - gtk_widget_set_sensitive (dialog->custom_frame, dialog->custompal_flag); - gtk_widget_show (frame); - + + /* now add the custom_frame */ + if (custom_frame) + { + gtk_box_pack_start (GTK_BOX (main_vbox), custom_frame, FALSE, FALSE, 0); + gtk_widget_show (custom_frame); + } + /* if the image isn't non-alpha/layered, set the default number of colours to one less than max, to leave room for a transparent index for transparent/animated GIFs */ @@ -936,7 +921,8 @@ indexed_palette_select_destroy_callback (GtkWidget *widget, { IndexedDialog *dialog = (IndexedDialog *)data; - dialog->palette_select = NULL; + if (dialog) + dialog->palette_select = NULL; } static gint @@ -992,66 +978,6 @@ indexed_custom_palette_button_callback (GtkWidget *widget, } -static void -indexed_num_cols_update (GtkWidget *widget, - gpointer data) -{ - ((IndexedDialog *) data)->num_cols = GTK_ADJUSTMENT (widget)->value; -} - -static void -indexed_radio_update (GtkWidget *widget, - gpointer data) -{ - gint *toggle_val; - - toggle_val = (int *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - *toggle_val = TRUE; - else - *toggle_val = FALSE; -} - -static void -frame_sensitivity_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - if (dialog && dialog->custom_frame) - gtk_widget_set_sensitive (dialog->custom_frame, dialog->custompal_flag); -} - -static void -indexed_alphadither_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - dialog->alphadither = TRUE; - else - dialog->alphadither = FALSE; -} - -static void -indexed_remdups_update (GtkWidget *widget, - gpointer data) -{ - IndexedDialog *dialog; - - dialog = (IndexedDialog *) data; - - if (GTK_TOGGLE_BUTTON (widget)->active) - dialog->remdups = TRUE; - else - dialog->remdups = FALSE; -} - /**********************************************************/ typedef struct diff --git a/app/gradient.c b/app/gradient.c index 1fcc9e9335..9a8e27ce41 100644 --- a/app/gradient.c +++ b/app/gradient.c @@ -71,7 +71,6 @@ #include "gradientP.h" #include "gradient_header.h" #include "gradient_select.h" -#include "session.h" #include "libgimp/gimpintl.h" #include "libgimp/gimplimits.h" diff --git a/app/gradient_editor.c b/app/gradient_editor.c index 1fcc9e9335..9a8e27ce41 100644 --- a/app/gradient_editor.c +++ b/app/gradient_editor.c @@ -71,7 +71,6 @@ #include "gradientP.h" #include "gradient_header.h" #include "gradient_select.h" -#include "session.h" #include "libgimp/gimpintl.h" #include "libgimp/gimplimits.h" diff --git a/app/gradient_select.c b/app/gradient_select.c index 9ab853a0b2..b644cc12f3 100644 --- a/app/gradient_select.c +++ b/app/gradient_select.c @@ -144,7 +144,7 @@ gradient_select_new (gchar *title, "gradient_selection", gimp_standard_help_func, "dialogs/gradient_selection.html", - GTK_WIN_POS_NONE, + title ? GTK_WIN_POS_MOUSE : GTK_WIN_POS_NONE, FALSE, TRUE, FALSE, _("Edit"), gradient_select_edit_callback, diff --git a/app/gui/brush-select.c b/app/gui/brush-select.c index 5d09b689b9..5a5c18363f 100644 --- a/app/gui/brush-select.c +++ b/app/gui/brush-select.c @@ -271,7 +271,7 @@ brush_select_new (gchar *title, "brush_selection", gimp_standard_help_func, "dialogs/brush_selection.html", - GTK_WIN_POS_NONE, + title ? GTK_WIN_POS_MOUSE : GTK_WIN_POS_NONE, FALSE, TRUE, FALSE, _("Refresh"), brush_select_refresh_callback, diff --git a/app/gui/gradient-editor.c b/app/gui/gradient-editor.c index 1fcc9e9335..9a8e27ce41 100644 --- a/app/gui/gradient-editor.c +++ b/app/gui/gradient-editor.c @@ -71,7 +71,6 @@ #include "gradientP.h" #include "gradient_header.h" #include "gradient_select.h" -#include "session.h" #include "libgimp/gimpintl.h" #include "libgimp/gimplimits.h" diff --git a/app/gui/gradient-select.c b/app/gui/gradient-select.c index 9ab853a0b2..b644cc12f3 100644 --- a/app/gui/gradient-select.c +++ b/app/gui/gradient-select.c @@ -144,7 +144,7 @@ gradient_select_new (gchar *title, "gradient_selection", gimp_standard_help_func, "dialogs/gradient_selection.html", - GTK_WIN_POS_NONE, + title ? GTK_WIN_POS_MOUSE : GTK_WIN_POS_NONE, FALSE, TRUE, FALSE, _("Edit"), gradient_select_edit_callback, diff --git a/app/gui/pattern-select.c b/app/gui/pattern-select.c index 27a9f2fbc0..57a46c83a3 100644 --- a/app/gui/pattern-select.c +++ b/app/gui/pattern-select.c @@ -163,7 +163,7 @@ pattern_select_new (gchar *title, "pattern_selection", gimp_standard_help_func, "dialogs/pattern_selection.html", - GTK_WIN_POS_NONE, + title ? GTK_WIN_POS_MOUSE : GTK_WIN_POS_NONE, FALSE, TRUE, FALSE, _("Refresh"), pattern_select_refresh_callback, diff --git a/app/gui/session.c b/app/gui/session.c index 2b5a180c3e..b7386eec04 100644 --- a/app/gui/session.c +++ b/app/gui/session.c @@ -77,7 +77,7 @@ SessionInfo brush_select_session_info = SessionInfo pattern_select_session_info = { "pattern-select", (GtkItemFactoryCallback)dialogs_patterns_cmd_callback, 160, 180, 0, 0, FALSE }; SessionInfo gradient_select_session_info = - { "gradient-editor", (GtkItemFactoryCallback)dialogs_gradients_cmd_callback, 170, 180, 0, 0, FALSE }; + { "gradient-select", (GtkItemFactoryCallback)dialogs_gradients_cmd_callback, 170, 180, 0, 0, FALSE }; SessionInfo device_status_session_info = { "device-status", (GtkItemFactoryCallback)dialogs_device_status_cmd_callback, 0, 600, 0, 0, FALSE }; SessionInfo error_console_session_info = diff --git a/app/pattern_select.c b/app/pattern_select.c index 27a9f2fbc0..57a46c83a3 100644 --- a/app/pattern_select.c +++ b/app/pattern_select.c @@ -163,7 +163,7 @@ pattern_select_new (gchar *title, "pattern_selection", gimp_standard_help_func, "dialogs/pattern_selection.html", - GTK_WIN_POS_NONE, + title ? GTK_WIN_POS_MOUSE : GTK_WIN_POS_NONE, FALSE, TRUE, FALSE, _("Refresh"), pattern_select_refresh_callback, diff --git a/app/session.c b/app/session.c index 2b5a180c3e..b7386eec04 100644 --- a/app/session.c +++ b/app/session.c @@ -77,7 +77,7 @@ SessionInfo brush_select_session_info = SessionInfo pattern_select_session_info = { "pattern-select", (GtkItemFactoryCallback)dialogs_patterns_cmd_callback, 160, 180, 0, 0, FALSE }; SessionInfo gradient_select_session_info = - { "gradient-editor", (GtkItemFactoryCallback)dialogs_gradients_cmd_callback, 170, 180, 0, 0, FALSE }; + { "gradient-select", (GtkItemFactoryCallback)dialogs_gradients_cmd_callback, 170, 180, 0, 0, FALSE }; SessionInfo device_status_session_info = { "device-status", (GtkItemFactoryCallback)dialogs_device_status_cmd_callback, 0, 600, 0, 0, FALSE }; SessionInfo error_console_session_info = diff --git a/app/widgets/gimpgradienteditor.c b/app/widgets/gimpgradienteditor.c index 1fcc9e9335..9a8e27ce41 100644 --- a/app/widgets/gimpgradienteditor.c +++ b/app/widgets/gimpgradienteditor.c @@ -71,7 +71,6 @@ #include "gradientP.h" #include "gradient_header.h" #include "gradient_select.h" -#include "session.h" #include "libgimp/gimpintl.h" #include "libgimp/gimplimits.h"