34
30
#include "gimp-intl.h"
33
/* local function prototypes */
35
static gboolean gimp_paint_mode_menu_separator_func (GtkTreeModel *model,
40
/* public functions */
43
gimp_enum_store_insert_value_after (GimpEnumStore *store,
49
g_return_if_fail (GIMP_IS_ENUM_STORE (store));
51
if (gimp_int_store_lookup_by_value (GTK_TREE_MODEL (store),
54
GEnumValue *enum_value;
56
enum_value = g_enum_get_value (store->enum_class, insert_value);
60
GtkTreeIter value_iter;
63
gtk_list_store_insert_after (GTK_LIST_STORE (store),
66
desc = gimp_enum_value_get_desc (store->enum_class, enum_value);
68
gtk_list_store_set (GTK_LIST_STORE (store), &value_iter,
69
GIMP_INT_STORE_VALUE, enum_value->value,
70
GIMP_INT_STORE_LABEL, desc,
77
gimp_int_store_insert_separator_after (GimpIntStore *store,
83
g_return_if_fail (GIMP_IS_INT_STORE (store));
85
if (gimp_int_store_lookup_by_value (GTK_TREE_MODEL (store),
90
gtk_list_store_insert_after (GTK_LIST_STORE (store),
92
gtk_list_store_set (GTK_LIST_STORE (store), &sep_iter,
93
GIMP_INT_STORE_VALUE, separator_value,
38
gimp_paint_mode_menu_new (GCallback callback,
40
gboolean with_behind_mode,
41
GimpLayerModeEffects initial)
99
gimp_paint_mode_menu_new (gboolean with_behind_mode,
100
gboolean with_replace_modes)
105
store = gimp_enum_store_new_with_values (GIMP_TYPE_LAYER_MODE_EFFECTS,
119
GIMP_GRAIN_EXTRACT_MODE,
120
GIMP_GRAIN_MERGE_MODE,
122
GIMP_DIFFERENCE_MODE,
125
GIMP_DARKEN_ONLY_MODE,
126
GIMP_LIGHTEN_ONLY_MODE,
129
GIMP_SATURATION_MODE,
133
gimp_int_store_insert_separator_after (GIMP_INT_STORE (store),
134
GIMP_DISSOLVE_MODE, -1);
135
gimp_int_store_insert_separator_after (GIMP_INT_STORE (store),
136
GIMP_OVERLAY_MODE, -1);
137
gimp_int_store_insert_separator_after (GIMP_INT_STORE (store),
138
GIMP_GRAIN_MERGE_MODE, -1);
139
gimp_int_store_insert_separator_after (GIMP_INT_STORE (store),
140
GIMP_LIGHTEN_ONLY_MODE, -1);
45
142
if (with_behind_mode)
47
menu = gimp_int_option_menu_new
48
(FALSE, callback, data, initial,
50
_("Normal"), GIMP_NORMAL_MODE, NULL,
51
_("Dissolve"), GIMP_DISSOLVE_MODE, NULL,
52
_("Behind"), GIMP_BEHIND_MODE, NULL,
53
_("Color erase"), GIMP_COLOR_ERASE_MODE, NULL,
55
_("Multiply"), GIMP_MULTIPLY_MODE, NULL,
56
_("Divide"), GIMP_DIVIDE_MODE, NULL,
57
_("Screen"), GIMP_SCREEN_MODE, NULL,
58
_("Overlay"), GIMP_OVERLAY_MODE, NULL,
60
_("Dodge"), GIMP_DODGE_MODE, NULL,
61
_("Burn"), GIMP_BURN_MODE, NULL,
62
_("Hard light"), GIMP_HARDLIGHT_MODE, NULL,
63
_("Soft light"), GIMP_SOFTLIGHT_MODE, NULL,
64
_("Grain extract"), GIMP_GRAIN_EXTRACT_MODE, NULL,
65
_("Grain merge"), GIMP_GRAIN_MERGE_MODE, NULL,
67
_("Difference"), GIMP_DIFFERENCE_MODE, NULL,
68
_("Addition"), GIMP_ADDITION_MODE, NULL,
69
_("Subtract"), GIMP_SUBTRACT_MODE, NULL,
70
_("Darken only"), GIMP_DARKEN_ONLY_MODE, NULL,
71
_("Lighten only"), GIMP_LIGHTEN_ONLY_MODE, NULL,
73
_("Hue"), GIMP_HUE_MODE, NULL,
74
_("Saturation"), GIMP_SATURATION_MODE, NULL,
75
_("Color"), GIMP_COLOR_MODE, NULL,
76
_("Value"), GIMP_VALUE_MODE, NULL,
144
gimp_enum_store_insert_value_after (GIMP_ENUM_STORE (store),
147
gimp_enum_store_insert_value_after (GIMP_ENUM_STORE (store),
149
GIMP_COLOR_ERASE_MODE);
152
if (with_replace_modes)
82
menu = gimp_int_option_menu_new
83
(FALSE, callback, data, initial,
85
_("Normal"), GIMP_NORMAL_MODE, NULL,
86
_("Dissolve"), GIMP_DISSOLVE_MODE, NULL,
88
_("Multiply"), GIMP_MULTIPLY_MODE, NULL,
89
_("Divide"), GIMP_DIVIDE_MODE, NULL,
90
_("Screen"), GIMP_SCREEN_MODE, NULL,
91
_("Overlay"), GIMP_OVERLAY_MODE, NULL,
93
_("Dodge"), GIMP_DODGE_MODE, NULL,
94
_("Burn"), GIMP_BURN_MODE, NULL,
95
_("Hard light"), GIMP_HARDLIGHT_MODE, NULL,
96
_("Soft light"), GIMP_SOFTLIGHT_MODE, NULL,
97
_("Grain extract"), GIMP_GRAIN_EXTRACT_MODE, NULL,
98
_("Grain merge"), GIMP_GRAIN_MERGE_MODE, NULL,
100
_("Difference"), GIMP_DIFFERENCE_MODE, NULL,
101
_("Addition"), GIMP_ADDITION_MODE, NULL,
102
_("Subtract"), GIMP_SUBTRACT_MODE, NULL,
103
_("Darken only"), GIMP_DARKEN_ONLY_MODE, NULL,
104
_("Lighten only"), GIMP_LIGHTEN_ONLY_MODE, NULL,
106
_("Hue"), GIMP_HUE_MODE, NULL,
107
_("Saturation"), GIMP_SATURATION_MODE, NULL,
108
_("Color"), GIMP_COLOR_MODE, NULL,
109
_("Value"), GIMP_VALUE_MODE, NULL,
154
gimp_enum_store_insert_value_after (GIMP_ENUM_STORE (store),
157
gimp_enum_store_insert_value_after (GIMP_ENUM_STORE (store),
158
GIMP_COLOR_ERASE_MODE,
160
gimp_enum_store_insert_value_after (GIMP_ENUM_STORE (store),
162
GIMP_ANTI_ERASE_MODE);
165
combo = gimp_enum_combo_box_new_with_model (GIMP_ENUM_STORE (store));
166
g_object_unref (store);
168
gtk_combo_box_set_row_separator_func (GTK_COMBO_BOX (combo),
169
gimp_paint_mode_menu_separator_func,
170
GINT_TO_POINTER (-1),
118
gimp_paint_mode_menu_set_history (GtkOptionMenu *menu,
119
GimpLayerModeEffects value)
177
/* private functions */
180
gimp_paint_mode_menu_separator_func (GtkTreeModel *model,
121
gimp_int_option_menu_set_history (menu, value);
186
gtk_tree_model_get (model, iter, GIMP_INT_STORE_VALUE, &value, -1);
188
return value == GPOINTER_TO_INT (data);