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.
This commit is contained in:
Michael Natterer 2017-03-25 11:32:17 +01:00
parent c3dc3ea59f
commit 3aeebfa178
11 changed files with 250 additions and 183 deletions

View File

@ -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");
}

View File

@ -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");
}

View File

@ -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");
}

View File

@ -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");
}

View File

@ -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,

View File

@ -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");

View File

@ -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);

View File

@ -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");
}

View File

@ -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");
}

View File

@ -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,

View File

@ -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");
}