From 3aeebfa178b7774af4cd85e1815c482d8558408d Mon Sep 17 00:00:00 2001 From: Michael Natterer Date: Sat, 25 Mar 2017 11:32:17 +0100 Subject: [PATCH] app: remove all class variables from GimpFilterToolClass and add them as return values to GimpFilterToool::get_operation(), so the tools is configured entirely per-instance now. This makes get_operations()'s signature more evil, but helps making GimpOperationTool less conplicated and convoluted. --- app/tools/gimpbrightnesscontrasttool.c | 34 ++++++---- app/tools/gimpcolorbalancetool.c | 30 +++++---- app/tools/gimpcolorizetool.c | 30 +++++---- app/tools/gimpcurvestool.c | 44 +++++++------ app/tools/gimpfiltertool-settings.c | 11 ++-- app/tools/gimpfiltertool.c | 74 +++++++++++++++------ app/tools/gimpfiltertool.h | 17 +++-- app/tools/gimphuesaturationtool.c | 32 +++++---- app/tools/gimplevelstool.c | 40 +++++++----- app/tools/gimpoperationtool.c | 89 +++++++++----------------- app/tools/gimpthresholdtool.c | 32 +++++---- 11 files changed, 250 insertions(+), 183 deletions(-) diff --git a/app/tools/gimpbrightnesscontrasttool.c b/app/tools/gimpbrightnesscontrasttool.c index 3e623bbd48..cd78dd2ec8 100644 --- a/app/tools/gimpbrightnesscontrasttool.c +++ b/app/tools/gimpbrightnesscontrasttool.c @@ -77,7 +77,11 @@ static gchar * gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_brightness_contrast_tool_dialog (GimpFilterTool *filter_tool); static void brightness_contrast_to_levels_callback (GtkWidget *widget, @@ -112,17 +116,13 @@ gimp_brightness_contrast_tool_class_init (GimpBrightnessContrastToolClass *klass GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - tool_class->initialize = gimp_brightness_contrast_tool_initialize; - tool_class->button_press = gimp_brightness_contrast_tool_button_press; - tool_class->button_release = gimp_brightness_contrast_tool_button_release; - tool_class->motion = gimp_brightness_contrast_tool_motion; + tool_class->initialize = gimp_brightness_contrast_tool_initialize; + tool_class->button_press = gimp_brightness_contrast_tool_button_press; + tool_class->button_release = gimp_brightness_contrast_tool_button_release; + tool_class->motion = gimp_brightness_contrast_tool_motion; - filter_tool_class->settings_name = "brightness-contrast"; - filter_tool_class->import_dialog_title = _("Import Brightness-Contrast settings"); - filter_tool_class->export_dialog_title = _("Export Brightness-Contrast settings"); - - filter_tool_class->get_operation = gimp_brightness_contrast_tool_get_operation; - filter_tool_class->dialog = gimp_brightness_contrast_tool_dialog; + filter_tool_class->get_operation = gimp_brightness_contrast_tool_get_operation; + filter_tool_class->dialog = gimp_brightness_contrast_tool_dialog; } static void @@ -168,9 +168,17 @@ gimp_brightness_contrast_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Adjust Brightness and Contrast")); + *description = g_strdup (_("Adjust Brightness and Contrast")); + *has_settings = TRUE; + *settings_folder = g_strdup ("brightness-contrast"); + *import_dialog_title = g_strdup (_("Import Brightness-Contrast settings")); + *export_dialog_title = g_strdup (_("Export Brightness-Contrast settings")); return g_strdup ("gimp:brightness-contrast"); } diff --git a/app/tools/gimpcolorbalancetool.c b/app/tools/gimpcolorbalancetool.c index 0b4dcb0897..234559c464 100644 --- a/app/tools/gimpcolorbalancetool.c +++ b/app/tools/gimpcolorbalancetool.c @@ -56,7 +56,11 @@ static gchar * gimp_color_balance_tool_get_operation (GimpFilterTool *filter gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_color_balance_tool_dialog (GimpFilterTool *filter_tool); static void gimp_color_balance_tool_reset (GimpFilterTool *filter_tool); @@ -92,15 +96,11 @@ gimp_color_balance_tool_class_init (GimpColorBalanceToolClass *klass) GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - tool_class->initialize = gimp_color_balance_tool_initialize; + tool_class->initialize = gimp_color_balance_tool_initialize; - filter_tool_class->settings_name = "color-balance"; - filter_tool_class->import_dialog_title = _("Import Color Balance Settings"); - filter_tool_class->export_dialog_title = _("Export Color Balance Settings"); - - filter_tool_class->get_operation = gimp_color_balance_tool_get_operation; - filter_tool_class->dialog = gimp_color_balance_tool_dialog; - filter_tool_class->reset = gimp_color_balance_tool_reset; + filter_tool_class->get_operation = gimp_color_balance_tool_get_operation; + filter_tool_class->dialog = gimp_color_balance_tool_dialog; + filter_tool_class->reset = gimp_color_balance_tool_reset; } static void @@ -135,9 +135,17 @@ gimp_color_balance_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Adjust Color Balance")); + *description = g_strdup (_("Adjust Color Balance")); + *has_settings = TRUE; + *settings_folder = g_strdup ("color-balance"); + *import_dialog_title = g_strdup (_("Import Color Balance Settings")); + *export_dialog_title = g_strdup (_("Export Color Balance Settings")); return g_strdup ("gimp:color-balance"); } diff --git a/app/tools/gimpcolorizetool.c b/app/tools/gimpcolorizetool.c index 08405d959e..6a2817ae38 100644 --- a/app/tools/gimpcolorizetool.c +++ b/app/tools/gimpcolorizetool.c @@ -55,7 +55,11 @@ static gchar * gimp_colorize_tool_get_operation (GimpFilterTool *filter_tool gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_colorize_tool_dialog (GimpFilterTool *filter_tool); static void gimp_colorize_tool_color_picked (GimpFilterTool *filter_tool, gpointer identifier, @@ -93,15 +97,11 @@ gimp_colorize_tool_class_init (GimpColorizeToolClass *klass) GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - tool_class->initialize = gimp_colorize_tool_initialize; + tool_class->initialize = gimp_colorize_tool_initialize; - filter_tool_class->settings_name = "colorize"; - filter_tool_class->import_dialog_title = _("Import Colorize Settings"); - filter_tool_class->export_dialog_title = _("Export Colorize Settings"); - - filter_tool_class->get_operation = gimp_colorize_tool_get_operation; - filter_tool_class->dialog = gimp_colorize_tool_dialog; - filter_tool_class->color_picked = gimp_colorize_tool_color_picked; + filter_tool_class->get_operation = gimp_colorize_tool_get_operation; + filter_tool_class->dialog = gimp_colorize_tool_dialog; + filter_tool_class->color_picked = gimp_colorize_tool_color_picked; } static void @@ -136,9 +136,17 @@ gimp_colorize_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Colorize the Image")); + *description = g_strdup (_("Colorize the Image")); + *has_settings = TRUE; + *settings_folder = g_strdup ("colorize"); + *import_dialog_title = g_strdup (_("Import Colorize Settings")); + *export_dialog_title = g_strdup (_("Export Colorize Settings")); return g_strdup ("gimp:colorize"); } diff --git a/app/tools/gimpcurvestool.c b/app/tools/gimpcurvestool.c index 2703a36d40..a62b216e98 100644 --- a/app/tools/gimpcurvestool.c +++ b/app/tools/gimpcurvestool.c @@ -95,7 +95,11 @@ static gchar * gimp_curves_tool_get_operation (GimpFilterTool *filter gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_curves_tool_dialog (GimpFilterTool *filter_tool); static void gimp_curves_tool_reset (GimpFilterTool *filter_tool); static gboolean gimp_curves_tool_settings_import (GimpFilterTool *filter_tool, @@ -165,24 +169,20 @@ gimp_curves_tool_class_init (GimpCurvesToolClass *klass) GimpColorToolClass *color_tool_class = GIMP_COLOR_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - object_class->constructed = gimp_curves_tool_constructed; + object_class->constructed = gimp_curves_tool_constructed; - tool_class->initialize = gimp_curves_tool_initialize; - tool_class->button_release = gimp_curves_tool_button_release; - tool_class->key_press = gimp_curves_tool_key_press; - tool_class->oper_update = gimp_curves_tool_oper_update; + tool_class->initialize = gimp_curves_tool_initialize; + tool_class->button_release = gimp_curves_tool_button_release; + tool_class->key_press = gimp_curves_tool_key_press; + tool_class->oper_update = gimp_curves_tool_oper_update; - color_tool_class->picked = gimp_curves_tool_color_picked; + color_tool_class->picked = gimp_curves_tool_color_picked; - filter_tool_class->settings_name = "curves"; - filter_tool_class->import_dialog_title = _("Import Curves"); - filter_tool_class->export_dialog_title = _("Export Curves"); - - filter_tool_class->get_operation = gimp_curves_tool_get_operation; - filter_tool_class->dialog = gimp_curves_tool_dialog; - filter_tool_class->reset = gimp_curves_tool_reset; - filter_tool_class->settings_import = gimp_curves_tool_settings_import; - filter_tool_class->settings_export = gimp_curves_tool_settings_export; + filter_tool_class->get_operation = gimp_curves_tool_get_operation; + filter_tool_class->dialog = gimp_curves_tool_dialog; + filter_tool_class->reset = gimp_curves_tool_reset; + filter_tool_class->settings_import = gimp_curves_tool_settings_import; + filter_tool_class->settings_export = gimp_curves_tool_settings_export; } static void @@ -405,9 +405,17 @@ gimp_curves_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Adjust Color Curves")); + *description = g_strdup (_("Adjust Color Curves")); + *has_settings = TRUE; + *settings_folder = g_strdup ("curves"); + *import_dialog_title = g_strdup (_("Import Curves")); + *export_dialog_title = g_strdup (_("Export Curves")); return g_strdup ("gimp:curves"); } diff --git a/app/tools/gimpfiltertool-settings.c b/app/tools/gimpfiltertool-settings.c index 0ea903726b..dcd4a615df 100644 --- a/app/tools/gimpfiltertool-settings.c +++ b/app/tools/gimpfiltertool-settings.c @@ -121,13 +121,12 @@ gimp_filter_tool_real_settings_export (GimpFilterTool *filter_tool, GOutputStream *output, GError **error) { - GimpFilterToolClass *klass = GIMP_FILTER_TOOL_GET_CLASS (filter_tool); - gchar *header; - gchar *footer; - gboolean success; + gchar *header; + gchar *footer; + gboolean success; - header = g_strdup_printf ("GIMP %s tool settings", klass->settings_name); - footer = g_strdup_printf ("end of %s tool settings", klass->settings_name); + header = g_strdup_printf ("GIMP '%s' settings", filter_tool->title); + footer = g_strdup_printf ("end of '%s' settings", filter_tool->title); success = gimp_config_serialize_to_stream (GIMP_CONFIG (filter_tool->config), output, diff --git a/app/tools/gimpfiltertool.c b/app/tools/gimpfiltertool.c index 85e07f821e..d358b2e385 100644 --- a/app/tools/gimpfiltertool.c +++ b/app/tools/gimpfiltertool.c @@ -184,10 +184,6 @@ gimp_filter_tool_class_init (GimpFilterToolClass *klass) color_tool_class->pick = gimp_filter_tool_pick_color; color_tool_class->picked = gimp_filter_tool_color_picked; - klass->settings_name = NULL; - klass->import_dialog_title = NULL; - klass->export_dialog_title = NULL; - klass->get_operation = NULL; klass->dialog = NULL; klass->reset = gimp_filter_tool_real_reset; @@ -273,6 +269,24 @@ gimp_filter_tool_finalize (GObject *object) filter_tool->help_id = NULL; } + if (filter_tool->settings_folder) + { + g_free (filter_tool->settings_folder); + filter_tool->settings_folder = NULL; + } + + if (filter_tool->import_dialog_title) + { + g_free (filter_tool->import_dialog_title); + filter_tool->import_dialog_title = NULL; + } + + if (filter_tool->export_dialog_title) + { + g_free (filter_tool->export_dialog_title); + filter_tool->export_dialog_title = NULL; + } + if (filter_tool->gui) { g_object_unref (filter_tool->gui); @@ -332,15 +346,14 @@ gimp_filter_tool_initialize (GimpTool *tool, if (! filter_tool->gui) { - GimpFilterToolClass *klass = GIMP_FILTER_TOOL_GET_CLASS (filter_tool); - GtkWidget *vbox; - GtkWidget *hbox; - GtkWidget *toggle; - GtkWidget *expander; - GtkWidget *frame; - GtkWidget *vbox2; - GtkWidget *combo; - gchar *operation_name; + GtkWidget *vbox; + GtkWidget *hbox; + GtkWidget *toggle; + GtkWidget *expander; + GtkWidget *frame; + GtkWidget *vbox2; + GtkWidget *combo; + gchar *operation_name; /* disabled for at least GIMP 2.8 */ filter_tool->overlay = FALSE; @@ -375,7 +388,7 @@ gimp_filter_tool_initialize (GimpTool *tool, G_CALLBACK (gimp_filter_tool_response), G_OBJECT (filter_tool), 0); - if (filter_tool->config && klass->settings_name) + if (filter_tool->config && filter_tool->has_settings) { GtkWidget *settings_ui; @@ -971,12 +984,15 @@ gimp_filter_tool_get_settings_ui (GimpFilterTool *filter_tool) type, (GCompareFunc) gimp_settings_compare); - default_folder = gimp_directory_file (klass->settings_name, NULL); + if (filter_tool->settings_folder) + default_folder = gimp_directory_file (filter_tool->settings_folder, NULL); + else + default_folder = NULL; settings_ui = klass->get_settings_ui (filter_tool, settings, - klass->import_dialog_title, - klass->export_dialog_title, + filter_tool->import_dialog_title, + filter_tool->export_dialog_title, filter_tool->help_id, default_folder, &filter_tool->settings_box); @@ -1292,12 +1308,34 @@ gimp_filter_tool_get_operation (GimpFilterTool *filter_tool) filter_tool->help_id = NULL; } + if (filter_tool->settings_folder) + { + g_free (filter_tool->settings_folder); + filter_tool->settings_folder = NULL; + } + + if (filter_tool->import_dialog_title) + { + g_free (filter_tool->import_dialog_title); + filter_tool->import_dialog_title = NULL; + } + + if (filter_tool->export_dialog_title) + { + g_free (filter_tool->export_dialog_title); + filter_tool->export_dialog_title = NULL; + } + operation_name = klass->get_operation (filter_tool, &filter_tool->title, &filter_tool->description, &filter_tool->undo_desc, &filter_tool->icon_name, - &filter_tool->help_id); + &filter_tool->help_id, + &filter_tool->has_settings, + &filter_tool->settings_folder, + &filter_tool->import_dialog_title, + &filter_tool->export_dialog_title); if (! operation_name) operation_name = g_strdup ("gegl:nop"); diff --git a/app/tools/gimpfiltertool.h b/app/tools/gimpfiltertool.h index 091d7be047..f3f0dac610 100644 --- a/app/tools/gimpfiltertool.h +++ b/app/tools/gimpfiltertool.h @@ -50,6 +50,11 @@ struct _GimpFilterTool gchar *icon_name; gchar *help_id; + gboolean has_settings; + gchar *settings_folder; + gchar *import_dialog_title; + gchar *export_dialog_title; + GimpDrawableFilter *filter; GimpGuide *percent_guide; @@ -66,17 +71,17 @@ struct _GimpFilterToolClass { GimpColorToolClass parent_class; - const gchar *settings_name; - const gchar *import_dialog_title; - const gchar *export_dialog_title; - /* virtual functions */ gchar * (* get_operation) (GimpFilterTool *filter_tool, gchar **title, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); void (* dialog) (GimpFilterTool *filter_tool); void (* reset) (GimpFilterTool *filter_tool); @@ -84,7 +89,7 @@ struct _GimpFilterToolClass GimpContainer *settings, const gchar *import_dialog_title, const gchar *export_dialog_title, - const gchar *file_dialog_help_id, + const gchar *help_id, GFile *default_folder, GtkWidget **settings_box); diff --git a/app/tools/gimphuesaturationtool.c b/app/tools/gimphuesaturationtool.c index 921de82cfb..b7e4de0c1f 100644 --- a/app/tools/gimphuesaturationtool.c +++ b/app/tools/gimphuesaturationtool.c @@ -63,7 +63,11 @@ static gchar * gimp_hue_saturation_tool_get_operation (GimpFilterTool *filte gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_hue_saturation_tool_dialog (GimpFilterTool *filter_tool); static void gimp_hue_saturation_tool_reset (GimpFilterTool *filter_tool); @@ -108,17 +112,13 @@ gimp_hue_saturation_tool_class_init (GimpHueSaturationToolClass *klass) GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - object_class->constructed = gimp_hue_saturation_tool_constructed; + object_class->constructed = gimp_hue_saturation_tool_constructed; - tool_class->initialize = gimp_hue_saturation_tool_initialize; + tool_class->initialize = gimp_hue_saturation_tool_initialize; - filter_tool_class->settings_name = "hue-saturation"; - filter_tool_class->import_dialog_title = _("Import Hue-Saturation Settings"); - filter_tool_class->export_dialog_title = _("Export Hue-Saturation Settings"); - - filter_tool_class->get_operation = gimp_hue_saturation_tool_get_operation; - filter_tool_class->dialog = gimp_hue_saturation_tool_dialog; - filter_tool_class->reset = gimp_hue_saturation_tool_reset; + filter_tool_class->get_operation = gimp_hue_saturation_tool_get_operation; + filter_tool_class->dialog = gimp_hue_saturation_tool_dialog; + filter_tool_class->reset = gimp_hue_saturation_tool_reset; } static void @@ -163,9 +163,17 @@ gimp_hue_saturation_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Adjust Hue / Lightness / Saturation")); + *description = g_strdup (_("Adjust Hue / Lightness / Saturation")); + *has_settings = TRUE; + *settings_folder = g_strdup ("hue-saturation"); + *import_dialog_title = g_strdup (_("Import Hue-Saturation Settings")); + *export_dialog_title = g_strdup (_("Export Hue-Saturation Settings")); return g_strdup ("gimp:hue-saturation"); } diff --git a/app/tools/gimplevelstool.c b/app/tools/gimplevelstool.c index 8c4afa9285..e1be971bed 100644 --- a/app/tools/gimplevelstool.c +++ b/app/tools/gimplevelstool.c @@ -77,7 +77,11 @@ static gchar * gimp_levels_tool_get_operation (GimpFilterTool *filter_tool gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_levels_tool_dialog (GimpFilterTool *filter_tool); static void gimp_levels_tool_reset (GimpFilterTool *filter_tool); static gboolean gimp_levels_tool_settings_import(GimpFilterTool *filter_tool, @@ -149,21 +153,17 @@ gimp_levels_tool_class_init (GimpLevelsToolClass *klass) GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - object_class->constructed = gimp_levels_tool_constructed; - object_class->finalize = gimp_levels_tool_finalize; + object_class->constructed = gimp_levels_tool_constructed; + object_class->finalize = gimp_levels_tool_finalize; - tool_class->initialize = gimp_levels_tool_initialize; + tool_class->initialize = gimp_levels_tool_initialize; - filter_tool_class->settings_name = "levels"; - filter_tool_class->import_dialog_title = _("Import Levels"); - filter_tool_class->export_dialog_title = _("Export Levels"); - - filter_tool_class->get_operation = gimp_levels_tool_get_operation; - filter_tool_class->dialog = gimp_levels_tool_dialog; - filter_tool_class->reset = gimp_levels_tool_reset; - filter_tool_class->settings_import = gimp_levels_tool_settings_import; - filter_tool_class->settings_export = gimp_levels_tool_settings_export; - filter_tool_class->color_picked = gimp_levels_tool_color_picked; + filter_tool_class->get_operation = gimp_levels_tool_get_operation; + filter_tool_class->dialog = gimp_levels_tool_dialog; + filter_tool_class->reset = gimp_levels_tool_reset; + filter_tool_class->settings_import = gimp_levels_tool_settings_import; + filter_tool_class->settings_export = gimp_levels_tool_settings_export; + filter_tool_class->color_picked = gimp_levels_tool_color_picked; } static void @@ -259,9 +259,17 @@ gimp_levels_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Adjust Color Levels")); + *description = g_strdup (_("Adjust Color Levels")); + *has_settings = TRUE; + *settings_folder = g_strdup ("levels"); + *import_dialog_title = g_strdup (_("Import Levels")); + *export_dialog_title = g_strdup (_("Export Levels")); return g_strdup ("gimp:levels"); } diff --git a/app/tools/gimpoperationtool.c b/app/tools/gimpoperationtool.c index 7720bd79f9..690e739baa 100644 --- a/app/tools/gimpoperationtool.c +++ b/app/tools/gimpoperationtool.c @@ -83,16 +83,13 @@ static gchar * gimp_operation_tool_get_operation (GimpFilterTool *filte gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_operation_tool_dialog (GimpFilterTool *filter_tool); static void gimp_operation_tool_reset (GimpFilterTool *filter_tool); -static GtkWidget * gimp_operation_tool_get_settings_ui (GimpFilterTool *filter_tool, - GimpContainer *settings, - const gchar *import_dialog_title, - const gchar *export_dialog_title, - const gchar *file_dialog_help_id, - GFile *default_folder, - GtkWidget **settings_box); static void gimp_operation_tool_color_picked (GimpFilterTool *filter_tool, gpointer identifier, gdouble x, @@ -142,22 +139,20 @@ gimp_operation_tool_class_init (GimpOperationToolClass *klass) GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - object_class->finalize = gimp_operation_tool_finalize; + object_class->finalize = gimp_operation_tool_finalize; - tool_class->initialize = gimp_operation_tool_initialize; - tool_class->control = gimp_operation_tool_control; + tool_class->initialize = gimp_operation_tool_initialize; + tool_class->control = gimp_operation_tool_control; - filter_tool_class->get_operation = gimp_operation_tool_get_operation; - filter_tool_class->dialog = gimp_operation_tool_dialog; - filter_tool_class->reset = gimp_operation_tool_reset; - filter_tool_class->get_settings_ui = gimp_operation_tool_get_settings_ui; - filter_tool_class->color_picked = gimp_operation_tool_color_picked; + filter_tool_class->get_operation = gimp_operation_tool_get_operation; + filter_tool_class->dialog = gimp_operation_tool_dialog; + filter_tool_class->reset = gimp_operation_tool_reset; + filter_tool_class->color_picked = gimp_operation_tool_color_picked; } static void gimp_operation_tool_init (GimpOperationTool *tool) { - GIMP_FILTER_TOOL_GET_CLASS (tool)->settings_name = NULL; /* XXX hack */ } static void @@ -260,15 +255,24 @@ gimp_operation_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { GimpOperationTool *tool = GIMP_OPERATION_TOOL (filter_tool); - *title = g_strdup (tool->title); - *description = g_strdup (tool->description); - *undo_desc = g_strdup (tool->undo_desc); - *icon_name = g_strdup (tool->icon_name); - *help_id = g_strdup (tool->help_id); + *title = g_strdup (tool->title); + *description = g_strdup (tool->description); + *undo_desc = g_strdup (tool->undo_desc); + *icon_name = g_strdup (tool->icon_name); + *help_id = g_strdup (tool->help_id); + *has_settings = FALSE; + *import_dialog_title = g_strdup_printf (_("Import '%s' Settings"), + tool->title); + *export_dialog_title = g_strdup_printf (_("Export '%s' Settings"), + tool->title); return g_strdup (tool->operation); } @@ -316,38 +320,6 @@ gimp_operation_tool_reset (GimpFilterTool *filter_tool) gimp_operation_tool_sync_op (tool, GIMP_TOOL (tool)->drawable); } -static GtkWidget * -gimp_operation_tool_get_settings_ui (GimpFilterTool *filter_tool, - GimpContainer *settings, - const gchar *import_dialog_title, - const gchar *export_dialog_title, - const gchar *file_dialog_help_id, - GFile *default_folder, - GtkWidget **settings_box) -{ - GimpOperationTool *tool = GIMP_OPERATION_TOOL (filter_tool); - GtkWidget *widget; - gchar *import_title; - gchar *export_title; - - import_title = g_strdup_printf (_("Import '%s' Settings"), tool->title); - export_title = g_strdup_printf (_("Export '%s' Settings"), tool->title); - - widget = - GIMP_FILTER_TOOL_CLASS (parent_class)->get_settings_ui (filter_tool, - settings, - import_title, - export_title, - file_dialog_help_id, - NULL, /* sic */ - settings_box); - - g_free (import_title); - g_free (export_title); - - return widget; -} - static void gimp_operation_tool_color_picked (GimpFilterTool *filter_tool, gpointer identifier, @@ -653,11 +625,6 @@ gimp_operation_tool_set_operation (GimpOperationTool *tool, gimp_filter_tool_get_operation (filter_tool); - if (undo_desc) - GIMP_FILTER_TOOL_GET_CLASS (tool)->settings_name = "yes"; /* XXX hack */ - else - GIMP_FILTER_TOOL_GET_CLASS (tool)->settings_name = NULL; /* XXX hack */ - if (tool->options_gui) { gtk_widget_destroy (tool->options_gui); @@ -744,6 +711,8 @@ gimp_operation_tool_set_operation (GimpOperationTool *tool, (GimpCreatePickerFunc) gimp_filter_tool_add_color_picker, tool); + filter_tool->has_settings = ! GTK_IS_LABEL (tool->options_gui); /* HACK */ + if (tool->options_box) { gtk_box_pack_start (GTK_BOX (tool->options_box), tool->options_gui, diff --git a/app/tools/gimpthresholdtool.c b/app/tools/gimpthresholdtool.c index 0af3ab1a45..853251ebed 100644 --- a/app/tools/gimpthresholdtool.c +++ b/app/tools/gimpthresholdtool.c @@ -57,7 +57,11 @@ static gchar * gimp_threshold_tool_get_operation (GimpFilterTool *filter gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id); + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title); static void gimp_threshold_tool_dialog (GimpFilterTool *filter_tool); static void gimp_threshold_tool_config_notify (GObject *object, @@ -105,17 +109,13 @@ gimp_threshold_tool_class_init (GimpThresholdToolClass *klass) GimpToolClass *tool_class = GIMP_TOOL_CLASS (klass); GimpFilterToolClass *filter_tool_class = GIMP_FILTER_TOOL_CLASS (klass); - object_class->constructed = gimp_threshold_tool_constructed; - object_class->finalize = gimp_threshold_tool_finalize; + object_class->constructed = gimp_threshold_tool_constructed; + object_class->finalize = gimp_threshold_tool_finalize; - tool_class->initialize = gimp_threshold_tool_initialize; + tool_class->initialize = gimp_threshold_tool_initialize; - filter_tool_class->settings_name = "threshold"; - filter_tool_class->import_dialog_title = _("Import Threshold Settings"); - filter_tool_class->export_dialog_title = _("Export Threshold Settings"); - - filter_tool_class->get_operation = gimp_threshold_tool_get_operation; - filter_tool_class->dialog = gimp_threshold_tool_dialog; + filter_tool_class->get_operation = gimp_threshold_tool_get_operation; + filter_tool_class->dialog = gimp_threshold_tool_dialog; } static void @@ -175,9 +175,17 @@ gimp_threshold_tool_get_operation (GimpFilterTool *filter_tool, gchar **description, gchar **undo_desc, gchar **icon_name, - gchar **help_id) + gchar **help_id, + gboolean *has_settings, + gchar **settings_folder, + gchar **import_dialog_title, + gchar **export_dialog_title) { - *description = g_strdup (_("Apply Threshold")); + *description = g_strdup (_("Apply Threshold")); + *has_settings = TRUE; + *settings_folder = g_strdup ("threshold"); + *import_dialog_title = g_strdup (_("Import Threshold Settings")); + *export_dialog_title = g_strdup (_("Export Threshold Settings")); return g_strdup ("gimp:threshold"); }