static void gimp_posterize_tool_dialog (GimpImageMapTool *image_map_tool) { GimpPosterizeTool *posterize_tool = GIMP_POSTERIZE_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *table; GtkObject *data; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); /* The table containing sliders */ table = gtk_table_new (1, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_box_pack_start (GTK_BOX (main_vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("Posterize _levels:"), SLIDER_WIDTH, -1, posterize_tool->config->levels, 2.0, 256.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); gimp_scale_entry_set_logarithmic (data, TRUE); posterize_tool->levels_data = GTK_ADJUSTMENT (data); g_signal_connect (posterize_tool->levels_data, "value-changed", G_CALLBACK (gimp_posterize_tool_levels_changed), posterize_tool); }
static gboolean c2g_mask_dialog (GimpDrawable *drawable) { GtkWidget *dialog; GtkWidget *main_vbox; GtkWidget *preview; GtkWidget *table; GtkObject *adj; gboolean run; gimp_ui_init ("c2g-"PLUG_IN_VERSION, TRUE); dialog = gimp_dialog_new (_("C2G Global/Local "PLUG_IN_VERSION), "c2g2-"PLUG_IN_VERSION, NULL, 0, gimp_standard_help_func, "plug-in-c2g-mask2-"PLUG_IN_VERSION, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); main_vbox = gtk_vbox_new (FALSE, 4); gtk_container_set_border_width (GTK_CONTAINER (main_vbox), 4); gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), main_vbox); gtk_widget_show (main_vbox); preview = gimp_drawable_preview_new (drawable, &c2g_params.update_preview); gtk_box_pack_start (GTK_BOX (main_vbox), preview, TRUE, TRUE, 0); gtk_widget_show (preview); g_signal_connect (preview, "invalidated", G_CALLBACK (preview_update), NULL); table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 6); gtk_table_set_row_spacings (GTK_TABLE (table), 6); gtk_box_pack_start (GTK_BOX (main_vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("_Radius:"), SCALE_WIDTH, ENTRY_WIDTH, c2g_params.radius, 0.25, 500.0, 0.1, 1.0, 1, TRUE, 0, 0, NULL, NULL); gimp_scale_entry_set_logarithmic(adj,TRUE); g_signal_connect (adj, "value_changed", G_CALLBACK (gimp_double_adjustment_update), &c2g_params.radius); g_signal_connect_swapped (adj, "value_changed", G_CALLBACK (gimp_preview_invalidate), preview); adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("_Amount +:"), SCALE_WIDTH, ENTRY_WIDTH, c2g_params.amount, 0.0, 5.0, 0.01, 0.1, 2, TRUE, 0, 0, NULL, NULL); g_signal_connect (adj, "value_changed", G_CALLBACK (gimp_double_adjustment_update), &c2g_params.amount); g_signal_connect_swapped (adj, "value_changed", G_CALLBACK (gimp_preview_invalidate), preview); adj = gimp_scale_entry_new (GTK_TABLE (table), 0, 2, "_Gamma:", SCALE_WIDTH, ENTRY_WIDTH, c2g_params.gamma, 0.1, 5.0, 0.01, 0.1, 2, TRUE, 0, 0, NULL, NULL); g_signal_connect (adj, "value_changed", G_CALLBACK (gimp_double_adjustment_update), &c2g_params.gamma); g_signal_connect_swapped (adj, "value_changed", G_CALLBACK (gimp_preview_invalidate), preview); //----------------------------------------------------------------------------- gtk_widget_show (dialog); run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK); gtk_widget_destroy (dialog); return run; }
static void gimp_brush_editor_init (GimpBrushEditor *editor) { GimpDataEditor *data_editor = GIMP_DATA_EDITOR (editor); GtkWidget *frame; GtkWidget *box; gint row = 0; frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (editor), frame, TRUE, TRUE, 0); gtk_widget_show (frame); data_editor->view = gimp_view_new_full_by_types (NULL, GIMP_TYPE_VIEW, GIMP_TYPE_BRUSH, BRUSH_VIEW_SIZE, BRUSH_VIEW_SIZE, 0, FALSE, FALSE, TRUE); gtk_widget_set_size_request (data_editor->view, -1, BRUSH_VIEW_SIZE); gimp_view_set_expand (GIMP_VIEW (data_editor->view), TRUE); gtk_container_add (GTK_CONTAINER (frame), data_editor->view); gtk_widget_show (data_editor->view); editor->shape_group = NULL; /* table for sliders/labels */ editor->options_table = gtk_table_new (4, 3, FALSE); gtk_table_set_row_spacings (GTK_TABLE (editor->options_table), 2); gtk_table_set_col_spacings (GTK_TABLE (editor->options_table), 2); gtk_box_pack_start (GTK_BOX (editor), editor->options_table, FALSE, FALSE, 0); gtk_widget_show (editor->options_table); /* Stock Box for the brush shape */ box = gimp_enum_stock_box_new (GIMP_TYPE_BRUSH_GENERATED_SHAPE, "gimp-shape", GTK_ICON_SIZE_MENU, G_CALLBACK (gimp_brush_editor_update_shape), editor, &editor->shape_group); gimp_table_attach_aligned (GTK_TABLE (editor->options_table), 0, row++, _("Shape:"), 0.0, 0.5, box, 2, TRUE); gtk_widget_show (box); /* brush radius scale */ editor->radius_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (editor->options_table), 0, row++, _("Radius:"), -1, 5, 0.0, 0.1, 1000.0, 0.1, 1.0, 1, TRUE, 0.0, 0.0, NULL, NULL)); gimp_scale_entry_set_logarithmic (GTK_OBJECT (editor->radius_data), TRUE); g_signal_connect (editor->radius_data, "value-changed", G_CALLBACK (gimp_brush_editor_update_brush), editor); /* number of spikes */ editor->spikes_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (editor->options_table), 0, row++, _("Spikes:"), -1, 5, 2.0, 2.0, 20.0, 1.0, 1.0, 0, TRUE, 0.0, 0.0, NULL, NULL)); g_signal_connect (editor->spikes_data, "value-changed", G_CALLBACK (gimp_brush_editor_update_brush), editor); /* brush hardness scale */ editor->hardness_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (editor->options_table), 0, row++, _("Hardness:"), -1, 5, 0.0, 0.0, 1.0, 0.01, 0.1, 2, TRUE, 0.0, 0.0, NULL, NULL)); g_signal_connect (editor->hardness_data, "value-changed", G_CALLBACK (gimp_brush_editor_update_brush), editor); /* brush aspect ratio scale */ editor->aspect_ratio_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (editor->options_table), 0, row++, _("Aspect ratio:"), -1, 5, 0.0, 1.0, 20.0, 0.1, 1.0, 1, TRUE, 0.0, 0.0, NULL, NULL)); g_signal_connect (editor->aspect_ratio_data,"value-changed", G_CALLBACK (gimp_brush_editor_update_brush), editor); /* brush angle scale */ editor->angle_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (editor->options_table), 0, row++, _("Angle:"), -1, 5, 0.0, 0.0, 180.0, 0.1, 1.0, 1, TRUE, 0.0, 0.0, NULL, NULL)); g_signal_connect (editor->angle_data, "value-changed", G_CALLBACK (gimp_brush_editor_update_brush), editor); /* brush spacing */ editor->spacing_data = GTK_ADJUSTMENT (gimp_scale_entry_new (GTK_TABLE (editor->options_table), 0, row++, _("Spacing:"), -1, 5, 0.0, 1.0, 200.0, 1.0, 10.0, 1, FALSE, 1.0, 5000.0, _("Percentage of width of brush"), NULL)); g_signal_connect (editor->spacing_data, "value-changed", G_CALLBACK (gimp_brush_editor_update_brush), editor); }
GtkWidget * gimp_ink_options_gui (GimpToolOptions *tool_options) { GObject *config = G_OBJECT (tool_options); GimpInkOptions *ink_options = GIMP_INK_OPTIONS (tool_options); GtkWidget *vbox = gimp_paint_options_gui (tool_options); GtkWidget *frame; GtkWidget *table; GtkWidget *blob_vbox; GtkWidget *hbox; GtkWidget *editor; GtkObject *adj; /* adjust sliders */ frame = gimp_frame_new (_("Adjustment")); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); gtk_widget_show (frame); table = gtk_table_new (2, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 2); gtk_container_add (GTK_CONTAINER (frame), table); gtk_widget_show (table); /* size slider */ adj = gimp_prop_scale_entry_new (config, "size", GTK_TABLE (table), 0, 0, _("Size:"), 1.0, 2.0, 1, FALSE, 0.0, 0.0); gimp_scale_entry_set_logarithmic (adj, TRUE); /* angle adjust slider */ gimp_prop_scale_entry_new (config, "tilt-angle", GTK_TABLE (table), 0, 1, _("Angle:"), 1.0, 10.0, 1, FALSE, 0.0, 0.0); /* sens sliders */ frame = gimp_frame_new (_("Sensitivity")); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, TRUE, 0); gtk_widget_show (frame); table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 2); gtk_container_add (GTK_CONTAINER (frame), table); gtk_widget_show (table); /* size sens slider */ gimp_prop_scale_entry_new (config, "size-sensitivity", GTK_TABLE (table), 0, 0, _("Size:"), 0.01, 0.1, 1, FALSE, 0.0, 0.0); /* tilt sens slider */ gimp_prop_scale_entry_new (config, "tilt-sensitivity", GTK_TABLE (table), 0, 1, _("Tilt:"), 0.01, 0.1, 1, FALSE, 0.0, 0.0); /* velocity sens slider */ gimp_prop_scale_entry_new (config, "vel-sensitivity", GTK_TABLE (table), 0, 2, _("Speed:"), 0.01, 0.1, 1, FALSE, 0.0, 0.0); /* bottom hbox */ hbox = gtk_hbox_new (FALSE, 2); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); /* Blob type radiobuttons */ frame = gimp_prop_enum_radio_frame_new (config, "blob-type", _("Type"), 0, 0); gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); { GtkWidget *frame_child = gtk_bin_get_child (GTK_BIN (frame)); GList *children; GList *list; GimpInkBlobType blob_type; children = gtk_container_get_children (GTK_CONTAINER (frame_child)); for (list = children, blob_type = GIMP_INK_BLOB_TYPE_ELLIPSE; list; list = g_list_next (list), blob_type++) { GtkWidget *radio = GTK_WIDGET (list->data); GtkWidget *blob; gtk_container_remove (GTK_CONTAINER (radio), gtk_bin_get_child (GTK_BIN (radio))); blob = blob_image_new (blob_type); gtk_container_add (GTK_CONTAINER (radio), blob); gtk_widget_show (blob); } g_list_free (children); } /* Blob shape widget */ frame = gimp_frame_new (_("Shape")); gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); blob_vbox = gtk_vbox_new (FALSE, 2); gtk_container_add (GTK_CONTAINER (frame), blob_vbox); gtk_widget_show (blob_vbox); frame = gtk_aspect_frame_new (NULL, 0.0, 0.5, 1.0, FALSE); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (blob_vbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); editor = gimp_blob_editor_new (ink_options->blob_type, ink_options->blob_aspect, ink_options->blob_angle); gtk_widget_set_size_request (editor, 60, 60); gtk_container_add (GTK_CONTAINER (frame), editor); gtk_widget_show (editor); gimp_config_connect (config, G_OBJECT (editor), NULL); return vbox; }