app: Make the layer auto expand options shared between tools

Also added option in Edit->Preferences->"Tool Options"->"Paint Options
Shared Between Tools" that decides weather the options should be shared
between different tools.
This commit is contained in:
Shubham 2023-08-18 08:51:46 +05:30 committed by Jehan
parent 5c2373a125
commit 41e0151478
16 changed files with 72 additions and 6 deletions

View File

@ -94,6 +94,7 @@ enum
PROP_GLOBAL_PALETTE,
PROP_GLOBAL_GRADIENT,
PROP_GLOBAL_FONT,
PROP_GLOBAL_EXPAND,
PROP_DEFAULT_IMAGE,
PROP_DEFAULT_GRID,
PROP_UNDO_LEVELS,
@ -536,6 +537,13 @@ gimp_core_config_class_init (GimpCoreConfigClass *klass)
TRUE,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_PROP_BOOLEAN (object_class, PROP_GLOBAL_EXPAND,
"global-expand",
"Global expand",
GLOBAL_EXPAND_BLURB,
TRUE,
GIMP_PARAM_STATIC_STRINGS);
GIMP_CONFIG_PROP_OBJECT (object_class, PROP_DEFAULT_IMAGE,
"default-image",
"Default image",
@ -1057,6 +1065,9 @@ gimp_core_config_set_property (GObject *object,
case PROP_GLOBAL_FONT:
core_config->global_font = g_value_get_boolean (value);
break;
case PROP_GLOBAL_EXPAND:
core_config->global_expand = g_value_get_boolean (value);
break;
case PROP_DEFAULT_IMAGE:
if (g_value_get_object (value))
gimp_config_sync (g_value_get_object (value) ,
@ -1333,6 +1344,9 @@ gimp_core_config_get_property (GObject *object,
case PROP_GLOBAL_FONT:
g_value_set_boolean (value, core_config->global_font);
break;
case PROP_GLOBAL_EXPAND:
g_value_set_boolean (value, core_config->global_expand);
break;
case PROP_DEFAULT_IMAGE:
g_value_set_object (value, core_config->default_image);
break;

View File

@ -78,6 +78,7 @@ struct _GimpCoreConfig
gboolean global_palette;
gboolean global_gradient;
gboolean global_font;
gboolean global_expand;
GimpTemplate *default_image;
GimpGrid *default_grid;
gint levels_of_undo;

View File

@ -181,6 +181,9 @@ _("When enabled, the selected pattern will be used for all tools.")
#define GLOBAL_PALETTE_BLURB \
"When enabled, the selected palette will be used for all tools."
#define GLOBAL_EXPAND_BLURB \
"When enabled, the selected auto expand layer settings will be used for all tools."
#define GRADIENT_PATH_BLURB \
"Sets the gradient search path."

View File

@ -711,6 +711,7 @@ typedef enum /*< pdb-skip, skip >*/
GIMP_CONTEXT_PROP_BUFFER = 18,
GIMP_CONTEXT_PROP_IMAGEFILE = 19,
GIMP_CONTEXT_PROP_TEMPLATE = 20,
GIMP_CONTEXT_PROP_EXPAND = 21,
GIMP_CONTEXT_PROP_LAST = GIMP_CONTEXT_PROP_TEMPLATE
} GimpContextPropType;
@ -737,6 +738,7 @@ typedef enum /*< pdb-skip, skip >*/
GIMP_CONTEXT_PROP_MASK_BUFFER = 1 << 18,
GIMP_CONTEXT_PROP_MASK_IMAGEFILE = 1 << 19,
GIMP_CONTEXT_PROP_MASK_TEMPLATE = 1 << 20,
GIMP_CONTEXT_PROP_MASK_EXPAND = 1 << 21,
/* aliases */
GIMP_CONTEXT_PROP_MASK_PAINT = (GIMP_CONTEXT_PROP_MASK_FOREGROUND |
@ -746,7 +748,8 @@ typedef enum /*< pdb-skip, skip >*/
GIMP_CONTEXT_PROP_MASK_BRUSH |
GIMP_CONTEXT_PROP_MASK_DYNAMICS |
GIMP_CONTEXT_PROP_MASK_PATTERN |
GIMP_CONTEXT_PROP_MASK_GRADIENT),
GIMP_CONTEXT_PROP_MASK_GRADIENT |
GIMP_CONTEXT_PROP_MASK_EXPAND),
GIMP_CONTEXT_PROP_MASK_ALL = (GIMP_CONTEXT_PROP_MASK_IMAGE |
GIMP_CONTEXT_PROP_MASK_DISPLAY |

View File

@ -1852,6 +1852,9 @@ prefs_dialog_new (Gimp *gimp,
prefs_check_button_add_with_icon (object, "global-gradient",
_("_Gradient"), GIMP_ICON_GRADIENT,
GTK_BOX (vbox2), size_group);
prefs_check_button_add_with_icon (object, "global-expand",
_("E_xpand Layers"), GIMP_ICON_TOOL_SCALE,
GTK_BOX (vbox2), size_group);
/* Move Tool */
vbox2 = prefs_frame_new (_("Move Tool"),

View File

@ -1283,9 +1283,18 @@ static const gchar *gradient_props[] =
"gradient-repeat"
};
static const gchar *expand_props[] =
{
"expand-use",
"expand-amount",
"expand-fill-type",
"expand-mask-fill-type",
};
static const gint max_n_props = (G_N_ELEMENTS (brush_props) +
G_N_ELEMENTS (dynamics_props) +
G_N_ELEMENTS (gradient_props));
G_N_ELEMENTS (gradient_props) +
G_N_ELEMENTS (expand_props));
gboolean
gimp_paint_options_is_prop (const gchar *prop_name,
@ -1316,6 +1325,13 @@ gimp_paint_options_is_prop (const gchar *prop_name,
return TRUE;
}
if (prop_mask & GIMP_CONTEXT_PROP_MASK_EXPAND)
{
for (i = 0; i < G_N_ELEMENTS (expand_props); i++)
if (! strcmp (prop_name, expand_props[i]))
return TRUE;
}
return FALSE;
}
@ -1350,6 +1366,12 @@ gimp_paint_options_copy_props (GimpPaintOptions *src,
names[n_props++] = gradient_props[i];
}
if (prop_mask & GIMP_CONTEXT_PROP_MASK_EXPAND)
{
for (i = 0; i < G_N_ELEMENTS (expand_props); i++)
names[n_props++] = expand_props[i];
}
if (n_props > 0)
{
g_object_getv (G_OBJECT (src), n_props, names, values);

View File

@ -166,6 +166,9 @@ gimp_tool_options_manager_init (Gimp *gimp)
g_signal_connect (gimp->config, "notify::global-font",
G_CALLBACK (tool_options_manager_global_notify),
manager);
g_signal_connect (gimp->config, "notify::global-expand",
G_CALLBACK (tool_options_manager_global_notify),
manager);
g_signal_connect (user_context, "tool-changed",
G_CALLBACK (tool_options_manager_tool_changed),
@ -250,6 +253,8 @@ tool_options_manager_get_global_props (GimpCoreConfig *config)
global_props |= GIMP_CONTEXT_PROP_MASK_GRADIENT;
if (config->global_font)
global_props |= GIMP_CONTEXT_PROP_MASK_FONT;
if (config->global_expand)
global_props |= GIMP_CONTEXT_PROP_MASK_EXPAND;
return global_props;
}
@ -354,6 +359,12 @@ tool_options_manager_paint_options_notify (GimpPaintOptions *src,
prop_mask |= GIMP_CONTEXT_PROP_MASK_GRADIENT;
}
if ((active || config->global_expand) &&
tool_info->context_props & GIMP_CONTEXT_PROP_MASK_EXPAND)
{
prop_mask |= GIMP_CONTEXT_PROP_MASK_EXPAND;
}
if (gimp_paint_options_is_prop (pspec->name, prop_mask))
{
GValue value = G_VALUE_INIT;

View File

@ -62,6 +62,7 @@ gimp_airbrush_tool_register (GimpToolRegisterCallback callback,
GIMP_TYPE_AIRBRUSH_OPTIONS,
gimp_airbrush_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND |
GIMP_CONTEXT_PROP_MASK_GRADIENT,
"gimp-airbrush-tool",
_("Airbrush"),

View File

@ -57,6 +57,7 @@ gimp_clone_tool_register (GimpToolRegisterCallback callback,
GIMP_TYPE_CLONE_OPTIONS,
gimp_clone_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND |
GIMP_CONTEXT_PROP_MASK_PATTERN,
"gimp-clone-tool",
_("Clone"),

View File

@ -69,7 +69,8 @@ gimp_convolve_tool_register (GimpToolRegisterCallback callback,
(* callback) (GIMP_TYPE_CONVOLVE_TOOL,
GIMP_TYPE_CONVOLVE_OPTIONS,
gimp_convolve_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND,
"gimp-convolve-tool",
_("Blur / Sharpen"),
_("Blur / Sharpen Tool: Selective blurring or unblurring using a brush"),

View File

@ -48,7 +48,8 @@ gimp_heal_tool_register (GimpToolRegisterCallback callback,
(* callback) (GIMP_TYPE_HEAL_TOOL,
GIMP_TYPE_SOURCE_OPTIONS,
gimp_heal_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND,
"gimp-heal-tool",
_("Healing"),
_("Healing Tool: Heal image irregularities"),

View File

@ -64,7 +64,8 @@ gimp_ink_tool_register (GimpToolRegisterCallback callback,
GIMP_CONTEXT_PROP_MASK_FOREGROUND |
GIMP_CONTEXT_PROP_MASK_BACKGROUND |
GIMP_CONTEXT_PROP_MASK_OPACITY |
GIMP_CONTEXT_PROP_MASK_PAINT_MODE,
GIMP_CONTEXT_PROP_MASK_PAINT_MODE |
GIMP_CONTEXT_PROP_MASK_EXPAND,
"gimp-ink-tool",
_("Ink"),
_("Ink Tool: Calligraphy-style painting"),

View File

@ -68,7 +68,8 @@ gimp_mybrush_tool_register (GimpToolRegisterCallback callback,
GIMP_CONTEXT_PROP_MASK_BACKGROUND |
GIMP_CONTEXT_PROP_MASK_OPACITY |
GIMP_CONTEXT_PROP_MASK_PAINT_MODE |
GIMP_CONTEXT_PROP_MASK_MYBRUSH,
GIMP_CONTEXT_PROP_MASK_MYBRUSH |
GIMP_CONTEXT_PROP_MASK_EXPAND,
"gimp-mypaint-brush-tool",
_("MyPaint Brush"),
_("MyPaint Brush Tool: Use MyPaint brushes in GIMP"),

View File

@ -52,6 +52,7 @@ gimp_paintbrush_tool_register (GimpToolRegisterCallback callback,
GIMP_TYPE_PAINT_OPTIONS,
gimp_paint_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND |
GIMP_CONTEXT_PROP_MASK_GRADIENT,
"gimp-paintbrush-tool",
_("Paintbrush"),

View File

@ -46,6 +46,7 @@ gimp_pencil_tool_register (GimpToolRegisterCallback callback,
GIMP_TYPE_PENCIL_OPTIONS,
gimp_paint_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND |
GIMP_CONTEXT_PROP_MASK_GRADIENT,
"gimp-pencil-tool",
_("Pencil"),

View File

@ -50,6 +50,7 @@ gimp_smudge_tool_register (GimpToolRegisterCallback callback,
GIMP_TYPE_SMUDGE_OPTIONS,
gimp_smudge_options_gui,
GIMP_PAINT_OPTIONS_CONTEXT_MASK |
GIMP_CONTEXT_PROP_MASK_EXPAND |
GIMP_CONTEXT_PROP_MASK_GRADIENT,
"gimp-smudge-tool",
_("Smudge"),