static void gimp_brush_select_mode_update (GtkWidget *widget, GimpBrushSelect *select) { gint paint_mode; if (gimp_int_combo_box_get_active (GIMP_INT_COMBO_BOX (widget), &paint_mode)) { gimp_context_set_paint_mode (GIMP_PDB_DIALOG (select)->context, (GimpLayerModeEffects) paint_mode); } }
static void gimp_brush_select_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec) { GimpPdbDialog *dialog = GIMP_PDB_DIALOG (object); GimpBrushSelect *select = GIMP_BRUSH_SELECT (object); switch (property_id) { case PROP_OPACITY: if (dialog->view) gimp_context_set_opacity (dialog->context, g_value_get_double (value)); else select->initial_opacity = g_value_get_double (value); break; case PROP_PAINT_MODE: if (dialog->view) gimp_context_set_paint_mode (dialog->context, g_value_get_enum (value)); else select->initial_mode = g_value_get_enum (value); break; case PROP_SPACING: if (dialog->view) { if (g_value_get_int (value) >= 0) gtk_adjustment_set_value (GIMP_BRUSH_FACTORY_VIEW (dialog->view)->spacing_adjustment, g_value_get_int (value)); } else { select->spacing = g_value_get_int (value); } break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); break; } }
void context_paint_mode_cmd_callback (GtkAction *action, gint value, gpointer data) { GimpContext *context; GimpToolInfo *tool_info; GimpLayerModeEffects paint_mode; gint index; return_if_no_context (context, data); paint_mode = gimp_context_get_paint_mode (context); index = action_select_value ((GimpActionSelectType) value, context_paint_mode_index (paint_mode), 0, G_N_ELEMENTS (paint_modes) - 1, 0, 0.0, 1.0, 1.0, 0.0, FALSE); gimp_context_set_paint_mode (context, paint_modes[index]); tool_info = gimp_context_get_tool (context); if (tool_info && GIMP_IS_TOOL_OPTIONS (tool_info->tool_options)) { GimpDisplay *display; const char *value_desc; gimp_enum_get_value (GIMP_TYPE_LAYER_MODE_EFFECTS, index, NULL, NULL, &value_desc, NULL); display = action_data_get_display (data); if (value_desc && display) { action_message (display, G_OBJECT (tool_info->tool_options), _("Paint Mode: %s"), value_desc); } } }
static GObject * gimp_brush_select_constructor (GType type, guint n_params, GObjectConstructParam *params) { GObject *object; GimpPdbDialog *dialog; GimpBrushSelect *select; GtkWidget *table; GtkAdjustment *spacing_adj; object = G_OBJECT_CLASS (parent_class)->constructor (type, n_params, params); dialog = GIMP_PDB_DIALOG (object); select = GIMP_BRUSH_SELECT (object); gimp_context_set_opacity (dialog->context, select->initial_opacity); gimp_context_set_paint_mode (dialog->context, select->initial_mode); g_signal_connect (dialog->context, "opacity-changed", G_CALLBACK (gimp_brush_select_opacity_changed), dialog); g_signal_connect (dialog->context, "paint-mode-changed", G_CALLBACK (gimp_brush_select_mode_changed), dialog); dialog->view = gimp_brush_factory_view_new (GIMP_VIEW_TYPE_GRID, dialog->context->gimp->brush_factory, dialog->context, FALSE, GIMP_VIEW_SIZE_MEDIUM, 1, dialog->menu_factory); gimp_container_box_set_size_request (GIMP_CONTAINER_BOX (GIMP_CONTAINER_EDITOR (dialog->view)->view), 5 * (GIMP_VIEW_SIZE_MEDIUM + 2), 5 * (GIMP_VIEW_SIZE_MEDIUM + 2)); gtk_container_set_border_width (GTK_CONTAINER (dialog->view), 12); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), dialog->view); gtk_widget_show (dialog->view); /* Create the frame and the table for the options */ table = GIMP_BRUSH_FACTORY_VIEW (dialog->view)->spacing_scale->parent; gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 2); /* Create the opacity scale widget */ select->opacity_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("Opacity:"), -1, 5, gimp_context_get_opacity (dialog->context) * 100.0, 0.0, 100.0, 1.0, 10.0, 1, TRUE, 0.0, 0.0, NULL, NULL)); g_signal_connect (select->opacity_data, "value-changed", G_CALLBACK (gimp_brush_select_opacity_update), select); /* Create the paint mode option menu */ select->paint_mode_menu = gimp_paint_mode_menu_new (TRUE, FALSE); gimp_table_attach_aligned (GTK_TABLE (table), 0, 2, _("Mode:"), 0.0, 0.5, select->paint_mode_menu, 2, FALSE); gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (select->paint_mode_menu), gimp_context_get_paint_mode (dialog->context), G_CALLBACK (gimp_brush_select_mode_update), select); spacing_adj = GIMP_BRUSH_FACTORY_VIEW (dialog->view)->spacing_adjustment; /* Use passed spacing instead of brushes default */ if (select->spacing >= 0) gtk_adjustment_set_value (spacing_adj, select->spacing); g_signal_connect (spacing_adj, "value-changed", G_CALLBACK (gimp_brush_select_spacing_update), select); gtk_widget_show (table); return object; }