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 void gimp_operation_tool_dialog (GimpImageMapTool *image_map_tool) { GimpOperationTool *tool = GIMP_OPERATION_TOOL (image_map_tool); GtkWidget *main_vbox; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); /* The options vbox */ tool->options_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_box_pack_start (GTK_BOX (main_vbox), tool->options_box, FALSE, FALSE, 0); gtk_widget_show (tool->options_box); if (tool->options_table) { gtk_container_add (GTK_CONTAINER (tool->options_box), tool->options_table); gtk_widget_show (tool->options_table); } if (tool->undo_desc) g_object_set (GIMP_IMAGE_MAP_TOOL (tool)->dialog, "description", tool->undo_desc, NULL); }
static void gimp_threshold_tool_dialog (GimpImageMapTool *image_map_tool) { GimpThresholdTool *t_tool = GIMP_THRESHOLD_TOOL (image_map_tool); GimpToolOptions *tool_options = GIMP_TOOL_GET_OPTIONS (image_map_tool); GimpThresholdConfig *config = t_tool->config; GtkWidget *main_vbox; GtkWidget *hbox; GtkWidget *menu; GtkWidget *box; GtkWidget *button; gint n_bins; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); menu = gimp_prop_enum_icon_box_new (G_OBJECT (tool_options), "histogram-scale", "gimp-histogram", 0, 0); gtk_box_pack_end (GTK_BOX (hbox), menu, FALSE, FALSE, 0); gtk_widget_show (menu); box = gimp_histogram_box_new (); gtk_box_pack_start (GTK_BOX (main_vbox), box, TRUE, TRUE, 0); gtk_widget_show (box); t_tool->histogram_box = GIMP_HISTOGRAM_BOX (box); n_bins = gimp_histogram_n_bins (t_tool->histogram); gimp_histogram_view_set_range (t_tool->histogram_box->view, config->low * (n_bins - 0.0001), config->high * (n_bins - 0.0001)); g_signal_connect (t_tool->histogram_box->view, "range-changed", G_CALLBACK (gimp_threshold_tool_histogram_range), t_tool); gimp_histogram_options_connect_view (GIMP_HISTOGRAM_OPTIONS (tool_options), t_tool->histogram_box->view); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); button = gtk_button_new_with_mnemonic (_("_Auto")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gimp_help_set_help_data (button, _("Automatically adjust to optimal " "binarization threshold"), NULL); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (gimp_threshold_tool_auto_clicked), t_tool); }
static void gimp_brightness_contrast_tool_dialog (GimpImageMapTool *image_map_tool) { GimpBrightnessContrastTool *bc_tool; GimpBrightnessContrastConfig *config; GtkWidget *main_vbox; GtkWidget *table; GtkWidget *button; GtkObject *data; bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (image_map_tool); config = bc_tool->config; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); /* The table containing sliders */ table = gtk_table_new (2, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (main_vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); /* Create the brightness scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("_Brightness:"), SLIDER_WIDTH, -1, config->brightness * 127.0, -127.0, 127.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); bc_tool->brightness_data = GTK_ADJUSTMENT (data); g_signal_connect (data, "value-changed", G_CALLBACK (brightness_contrast_brightness_changed), bc_tool); /* Create the contrast scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("Con_trast:"), SLIDER_WIDTH, -1, config->contrast * 127.0, -127.0, 127.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); bc_tool->contrast_data = GTK_ADJUSTMENT (data); g_signal_connect (data, "value-changed", G_CALLBACK (brightness_contrast_contrast_changed), bc_tool); button = gimp_stock_button_new (GIMP_STOCK_TOOL_LEVELS, _("Edit these Settings as Levels")); gtk_box_pack_start (GTK_BOX (main_vbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (brightness_contrast_to_levels_callback), bc_tool); }
static void gimp_posterize_tool_dialog (GimpImageMapTool *image_map_tool) { GtkWidget *main_vbox; GtkWidget *scale; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); scale = gimp_prop_spin_scale_new (image_map_tool->config, "levels", _("Posterize _levels"), 1.0, 10.0, 0); gimp_spin_scale_set_gamma (GIMP_SPIN_SCALE (scale), 1.5); gtk_box_pack_start (GTK_BOX (main_vbox), scale, FALSE, FALSE, 0); gtk_widget_show (scale); }
static void gimp_operation_tool_dialog (GimpImageMapTool *im_tool) { GimpOperationTool *tool = GIMP_OPERATION_TOOL (im_tool); GtkWidget *main_vbox; main_vbox = gimp_image_map_tool_dialog_get_vbox (im_tool); /* The options vbox */ tool->options_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); gtk_box_pack_start (GTK_BOX (main_vbox), tool->options_box, FALSE, FALSE, 0); gtk_widget_show (tool->options_box); if (tool->aux_input_box) { gtk_box_pack_start (GTK_BOX (tool->options_box), tool->aux_input_box, FALSE, FALSE, 0); gtk_widget_show (tool->aux_input_box); } if (tool->aux2_input_box) { gtk_box_pack_start (GTK_BOX (tool->options_box), tool->aux2_input_box, FALSE, FALSE, 0); gtk_widget_show (tool->aux2_input_box); } if (tool->options_gui) { gtk_box_pack_start (GTK_BOX (tool->options_box), tool->options_gui, FALSE, FALSE, 0); gtk_widget_show (tool->options_gui); } if (tool->undo_desc) gimp_tool_gui_set_description (GIMP_IMAGE_MAP_TOOL (tool)->gui, tool->undo_desc); if (tool->icon_name) gimp_tool_gui_set_icon_name (GIMP_IMAGE_MAP_TOOL (tool)->gui, tool->icon_name); }
static void gimp_desaturate_tool_dialog (GimpImageMapTool *image_map_tool) { GimpDesaturateTool *desaturate_tool = GIMP_DESATURATE_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *frame; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); /* The table containing sliders */ frame = gimp_enum_radio_frame_new (GIMP_TYPE_DESATURATE_MODE, gtk_label_new (_("Choose shade of gray based on:")), G_CALLBACK (gimp_desaturate_tool_mode_changed), desaturate_tool, &desaturate_tool->button); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); }
static void gimp_brightness_contrast_tool_dialog (GimpImageMapTool *image_map_tool) { GimpBrightnessContrastTool *bc_tool = GIMP_BRIGHTNESS_CONTRAST_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *scale; GtkWidget *button; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); /* Create the brightness scale widget */ scale = gimp_prop_spin_scale_new (image_map_tool->config, "brightness", _("_Brightness"), 1.0 / 127.0, 10.0 / 127.0, 0); gtk_box_pack_start (GTK_BOX (main_vbox), scale, FALSE, FALSE, 0); gtk_widget_show (scale); bc_tool->brightness_scale = scale; /* Create the contrast scale widget */ scale = gimp_prop_spin_scale_new (image_map_tool->config, "contrast", _("_Contrast"), 1.0 / 127.0, 10.0 / 127.0, 0); gtk_box_pack_start (GTK_BOX (main_vbox), scale, FALSE, FALSE, 0); gtk_widget_show (scale); bc_tool->contrast_scale = scale; button = gimp_stock_button_new (GIMP_STOCK_TOOL_LEVELS, _("Edit these Settings as Levels")); gtk_box_pack_start (GTK_BOX (main_vbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (brightness_contrast_to_levels_callback), image_map_tool); }
static void gimp_gegl_tool_dialog (GimpImageMapTool *image_map_tool) { GimpGeglTool *tool = GIMP_GEGL_TOOL (image_map_tool); GimpOperationTool *o_tool = GIMP_OPERATION_TOOL (image_map_tool); GtkListStore *store; GtkCellRenderer *cell; GtkWidget *main_vbox; GtkWidget *hbox; GtkWidget *combo; GList *opclasses; GList *iter; GIMP_IMAGE_MAP_TOOL_CLASS (parent_class)->dialog (image_map_tool); main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); /* The operation combo box */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (main_vbox), hbox, 0); gtk_widget_show (hbox); store = gtk_list_store_new (N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); opclasses = gimp_get_geglopclasses (); for (iter = opclasses; iter; iter = iter->next) { GeglOperationClass *opclass = GEGL_OPERATION_CLASS (iter->data); const gchar *stock_id; const gchar *label; if (g_str_has_prefix (opclass->name, "gegl:")) { label = opclass->name + strlen ("gegl:"); stock_id = GIMP_STOCK_GEGL; } else { label = opclass->name; stock_id = NULL; } gtk_list_store_insert_with_values (store, NULL, -1, COLUMN_NAME, opclass->name, COLUMN_LABEL, label, COLUMN_STOCK_ID, stock_id, -1); } g_list_free (opclasses); combo = gtk_combo_box_new_with_model (GTK_TREE_MODEL (store)); g_object_unref (store); gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); gtk_widget_show (combo); cell = gtk_cell_renderer_pixbuf_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, FALSE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), cell, "stock-id", COLUMN_STOCK_ID); cell = gtk_cell_renderer_text_new (); gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), cell, TRUE); gtk_cell_layout_add_attribute (GTK_CELL_LAYOUT (combo), cell, "text", COLUMN_LABEL); g_signal_connect (combo, "changed", G_CALLBACK (gimp_gegl_tool_operation_changed), tool); tool->operation_combo = combo; tool->description_label = gtk_label_new (""); gtk_label_set_line_wrap (GTK_LABEL (tool->description_label), TRUE); gtk_misc_set_alignment (GTK_MISC (tool->description_label), 0.0, 0.0); gtk_box_pack_start (GTK_BOX (main_vbox), tool->description_label, FALSE, FALSE, 0); gtk_box_reorder_child (GTK_BOX (main_vbox), tool->description_label, 1); /* The options vbox */ o_tool->options_table = gtk_label_new (_("Select an operation from the list above")); gimp_label_set_attributes (GTK_LABEL (o_tool->options_table), PANGO_ATTR_STYLE, PANGO_STYLE_ITALIC, -1); gtk_misc_set_padding (GTK_MISC (o_tool->options_table), 0, 4); gtk_container_add (GTK_CONTAINER (o_tool->options_box), o_tool->options_table); gtk_widget_show (o_tool->options_table); }
static void gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool) { GimpColorizeTool *col_tool = GIMP_COLORIZE_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *table; GtkWidget *frame; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *button; GtkObject *data; GimpRGB color; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); frame = gimp_frame_new (_("Select Color")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); /* The table containing sliders */ vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 6); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); /* Create the hue scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("_Hue:"), SLIDER_WIDTH, SPINNER_WIDTH, col_tool->config->hue * 360.0, 0.0, 359.99, 1.0, 15.0, 0, TRUE, 0.0, 0.0, NULL, NULL); col_tool->hue_data = GTK_ADJUSTMENT (data); g_signal_connect (data, "value-changed", G_CALLBACK (colorize_hue_changed), col_tool); /* Create the saturation scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("_Saturation:"), SLIDER_WIDTH, SPINNER_WIDTH, col_tool->config->saturation * 100.0, 0.0, 100.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); col_tool->saturation_data = GTK_ADJUSTMENT (data); g_signal_connect (data, "value-changed", G_CALLBACK (colorize_saturation_changed), col_tool); /* Create the lightness scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2, _("_Lightness:"), SLIDER_WIDTH, SPINNER_WIDTH, col_tool->config->lightness * 100.0, -100.0, 100.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); col_tool->lightness_data = GTK_ADJUSTMENT (data); g_signal_connect (data, "value-changed", G_CALLBACK (colorize_lightness_changed), col_tool); /* Create the color button */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); gimp_colorize_config_get_color (col_tool->config, &color); col_tool->color_button = gimp_color_panel_new (_("Colorize Color"), &color, GIMP_COLOR_AREA_FLAT, 128, 24); gimp_color_button_set_update (GIMP_COLOR_BUTTON (col_tool->color_button), TRUE); gimp_color_panel_set_context (GIMP_COLOR_PANEL (col_tool->color_button), GIMP_CONTEXT (GIMP_TOOL_GET_OPTIONS (col_tool))); gtk_box_pack_start (GTK_BOX (hbox), col_tool->color_button, TRUE, TRUE, 0); gtk_widget_show (col_tool->color_button); g_signal_connect (col_tool->color_button, "color-changed", G_CALLBACK (colorize_color_changed), col_tool); button = gimp_image_map_tool_add_color_picker (image_map_tool, "colorize", GIMP_STOCK_COLOR_PICKER_GRAY, _("Pick color from image")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); }
static void gimp_levels_tool_dialog (GimpImageMapTool *image_map_tool) { GimpLevelsTool *tool = GIMP_LEVELS_TOOL (image_map_tool); GimpToolOptions *tool_options = GIMP_TOOL_GET_OPTIONS (image_map_tool); GimpLevelsConfig *config = tool->config; GtkListStore *store; GtkSizeGroup *label_group; GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *vbox2; GtkWidget *vbox3; GtkWidget *hbox; GtkWidget *hbox2; GtkWidget *label; GtkWidget *menu; GtkWidget *frame; GtkWidget *hbbox; GtkWidget *button; GtkWidget *spinbutton; GtkAdjustment *adjustment; GtkWidget *bar; GtkWidget *handle_bar; gint border; g_signal_connect (image_map_tool->settings_box, "file-dialog-setup", G_CALLBACK (gimp_levels_tool_export_setup), image_map_tool); main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); label_group = gimp_image_map_tool_dialog_get_label_group (image_map_tool); /* The option menu for selecting channels */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); label = gtk_label_new_with_mnemonic (_("Cha_nnel:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); gtk_size_group_add_widget (label_group, label); store = gimp_enum_store_new_with_range (GIMP_TYPE_HISTOGRAM_CHANNEL, GIMP_HISTOGRAM_VALUE, GIMP_HISTOGRAM_ALPHA); menu = gimp_enum_combo_box_new_with_model (GIMP_ENUM_STORE (store)); g_object_unref (store); g_signal_connect (menu, "changed", G_CALLBACK (levels_channel_callback), tool); gimp_enum_combo_box_set_stock_prefix (GIMP_ENUM_COMBO_BOX (menu), "gimp-channel"); gtk_box_pack_start (GTK_BOX (hbox), menu, FALSE, FALSE, 0); gtk_widget_show (menu); tool->channel_menu = menu; gtk_label_set_mnemonic_widget (GTK_LABEL (label), menu); button = gtk_button_new_with_mnemonic (_("R_eset Channel")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (levels_channel_reset_callback), tool); menu = gimp_prop_enum_stock_box_new (G_OBJECT (tool_options), "histogram-scale", "gimp-histogram", 0, 0); gtk_box_pack_end (GTK_BOX (hbox), menu, FALSE, FALSE, 0); gtk_widget_show (menu); /* Input levels frame */ frame = gimp_frame_new (_("Input Levels")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 2); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_add (GTK_CONTAINER (frame), vbox2); gtk_widget_show (vbox2); tool->histogram_view = gimp_histogram_view_new (FALSE); gtk_box_pack_start (GTK_BOX (vbox2), tool->histogram_view, TRUE, TRUE, 0); gtk_widget_show (GTK_WIDGET (tool->histogram_view)); gimp_histogram_options_connect_view (GIMP_HISTOGRAM_OPTIONS (tool_options), GIMP_HISTOGRAM_VIEW (tool->histogram_view)); g_object_get (tool->histogram_view, "border-width", &border, NULL); vbox3 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox3), border); gtk_box_pack_start (GTK_BOX (vbox2), vbox3, FALSE, FALSE, 0); gtk_widget_show (vbox3); tool->input_bar = g_object_new (GIMP_TYPE_COLOR_BAR, NULL); gtk_widget_set_size_request (tool->input_bar, -1, GRADIENT_HEIGHT / 2); gtk_box_pack_start (GTK_BOX (vbox3), tool->input_bar, FALSE, FALSE, 0); gtk_widget_show (tool->input_bar); bar = g_object_new (GIMP_TYPE_COLOR_BAR, NULL); gtk_widget_set_size_request (bar, -1, GRADIENT_HEIGHT / 2); gtk_box_pack_start (GTK_BOX (vbox3), bar, FALSE, FALSE, 0); gtk_widget_show (bar); handle_bar = g_object_new (GIMP_TYPE_HANDLE_BAR, NULL); gtk_widget_set_size_request (handle_bar, -1, CONTROL_HEIGHT); gtk_box_pack_start (GTK_BOX (vbox3), handle_bar, FALSE, FALSE, 0); gtk_widget_show (handle_bar); gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (handle_bar), tool->input_bar); gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (handle_bar), bar); /* Horizontal box for input levels spinbuttons */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); /* low input spin */ hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_start (GTK_BOX (hbox), hbox2, FALSE, FALSE, 0); gtk_widget_show (hbox2); button = gimp_levels_tool_color_picker_new (tool, PICK_LOW_INPUT); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); gtk_widget_show (button); tool->low_input_spinbutton = spinbutton = gimp_prop_spin_button_new (image_map_tool->config, "low-input", 0.01, 0.1, 1); gtk_box_pack_start (GTK_BOX (hbox2), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); tool->low_input = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinbutton)); gimp_handle_bar_set_adjustment (GIMP_HANDLE_BAR (handle_bar), 0, tool->low_input); /* input gamma spin */ spinbutton = gimp_prop_spin_button_new (image_map_tool->config, "gamma", 0.01, 0.1, 2); gtk_box_pack_start (GTK_BOX (hbox), spinbutton, TRUE, FALSE, 0); gimp_help_set_help_data (spinbutton, _("Gamma"), NULL); gtk_widget_show (spinbutton); tool->gamma = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinbutton)); tool->gamma_linear = GTK_ADJUSTMENT (gtk_adjustment_new (127, 0, 255, 0.1, 1.0, 0.0)); g_signal_connect (tool->gamma_linear, "value-changed", G_CALLBACK (levels_linear_gamma_changed), tool); gimp_handle_bar_set_adjustment (GIMP_HANDLE_BAR (handle_bar), 1, tool->gamma_linear); g_object_unref (tool->gamma_linear); /* high input spin */ hbox2 = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 2); gtk_box_pack_end (GTK_BOX (hbox), hbox2, FALSE, FALSE, 0); gtk_widget_show (hbox2); button = gimp_levels_tool_color_picker_new (tool, PICK_HIGH_INPUT); gtk_box_pack_start (GTK_BOX (hbox2), button, FALSE, FALSE, 0); gtk_widget_show (button); spinbutton = gimp_prop_spin_button_new (image_map_tool->config, "high-input", 0.01, 0.1, 1); gtk_box_pack_start (GTK_BOX (hbox2), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); tool->high_input_spinbutton = spinbutton; tool->high_input = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinbutton)); gimp_handle_bar_set_adjustment (GIMP_HANDLE_BAR (handle_bar), 2, tool->high_input); /* Output levels frame */ frame = gimp_frame_new (_("Output Levels")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); vbox2 = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); gtk_container_set_border_width (GTK_CONTAINER (vbox2), border); gtk_container_add (GTK_CONTAINER (frame), vbox2); gtk_widget_show (vbox2); tool->output_bar = g_object_new (GIMP_TYPE_COLOR_BAR, NULL); gtk_widget_set_size_request (tool->output_bar, -1, GRADIENT_HEIGHT); gtk_box_pack_start (GTK_BOX (vbox2), tool->output_bar, FALSE, FALSE, 0); gtk_widget_show (tool->output_bar); handle_bar = g_object_new (GIMP_TYPE_HANDLE_BAR, NULL); gtk_widget_set_size_request (handle_bar, -1, CONTROL_HEIGHT); gtk_box_pack_start (GTK_BOX (vbox2), handle_bar, FALSE, FALSE, 0); gtk_widget_show (handle_bar); gimp_handle_bar_connect_events (GIMP_HANDLE_BAR (handle_bar), tool->output_bar); /* Horizontal box for levels spin widgets */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); /* low output spin */ tool->low_output_spinbutton = spinbutton = gimp_prop_spin_button_new (image_map_tool->config, "low-output", 0.01, 0.1, 1); gtk_box_pack_start (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinbutton)); gimp_handle_bar_set_adjustment (GIMP_HANDLE_BAR (handle_bar), 0, adjustment); /* high output spin */ tool->high_output_spinbutton = spinbutton = gimp_prop_spin_button_new (image_map_tool->config, "high-output", 0.01, 0.1, 1); gtk_box_pack_end (GTK_BOX (hbox), spinbutton, FALSE, FALSE, 0); gtk_widget_show (spinbutton); adjustment = gtk_spin_button_get_adjustment (GTK_SPIN_BUTTON (spinbutton)); gimp_handle_bar_set_adjustment (GIMP_HANDLE_BAR (handle_bar), 2, adjustment); /* all channels frame */ frame = gimp_frame_new (_("All Channels")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_container_add (GTK_CONTAINER (frame), hbox); gtk_widget_show (hbox); hbbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_end (GTK_BOX (hbox), hbbox, FALSE, FALSE, 0); gtk_widget_show (hbbox); button = gtk_button_new_with_mnemonic (_("_Auto")); gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); gimp_help_set_help_data (button, _("Adjust levels automatically"), NULL); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (levels_stretch_callback), tool); button = gimp_levels_tool_color_picker_new (tool, PICK_LOW_INPUT | PICK_ALL_CHANNELS); gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); gtk_widget_show (button); button = gimp_levels_tool_color_picker_new (tool, PICK_GAMMA | PICK_ALL_CHANNELS); gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); gtk_widget_show (button); button = gimp_levels_tool_color_picker_new (tool, PICK_HIGH_INPUT | PICK_ALL_CHANNELS); gtk_box_pack_start (GTK_BOX (hbbox), button, FALSE, FALSE, 0); gtk_widget_show (button); button = gimp_stock_button_new (GIMP_STOCK_TOOL_CURVES, _("Edit these Settings as Curves")); gtk_box_pack_start (GTK_BOX (main_vbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (levels_to_curves_callback), tool); gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (tool->channel_menu), config->channel); }
static void gimp_hue_saturation_tool_dialog (GimpImageMapTool *image_map_tool) { GimpHueSaturationTool *hs_tool = GIMP_HUE_SATURATION_TOOL (image_map_tool); GimpHueSaturationConfig *config = hs_tool->config; GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *abox; GtkWidget *table; GtkWidget *button; GtkWidget *frame; GtkWidget *hbox; GtkObject *data; GtkSizeGroup *label_group; GtkSizeGroup *spinner_group; GSList *group = NULL; gint i; const struct { const gchar *label; const gchar *tooltip; gint label_col; gint label_row; gint frame_col; gint frame_row; } hue_range_table[] = { { N_("M_aster"), N_("Adjust all colors"), 2, 3, 0, 0 }, { N_("_R"), N_("Red"), 2, 1, 2, 0 }, { N_("_Y"), N_("Yellow"), 1, 2, 0, 2 }, { N_("_G"), N_("Green"), 1, 4, 0, 4 }, { N_("_C"), N_("Cyan"), 2, 5, 2, 6 }, { N_("_B"), N_("Blue"), 3, 4, 4, 4 }, { N_("_M"), N_("Magenta"), 3, 2, 4, 2 } }; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); frame = gimp_frame_new (_("Select Primary Color to Adjust")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, TRUE, TRUE, 0); gtk_widget_show (frame); vbox = gtk_vbox_new (FALSE, 6); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); abox = gtk_alignment_new (0.5, 0.5, 0.0, 0.0); gtk_box_pack_start (GTK_BOX (vbox), abox, TRUE, TRUE, 0); gtk_widget_show (abox); /* The table containing hue ranges */ table = gtk_table_new (7, 5, FALSE); gtk_table_set_col_spacing (GTK_TABLE (table), 0, 4); gtk_table_set_col_spacing (GTK_TABLE (table), 3, 4); gtk_table_set_row_spacing (GTK_TABLE (table), 0, 2); gtk_table_set_row_spacing (GTK_TABLE (table), 5, 2); gtk_container_add (GTK_CONTAINER (abox), table); /* the radio buttons for hue ranges */ for (i = 0; i < G_N_ELEMENTS (hue_range_table); i++) { button = gtk_radio_button_new_with_mnemonic (group, gettext (hue_range_table[i].label)); group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button)); g_object_set_data (G_OBJECT (button), "gimp-item-data", GINT_TO_POINTER (i)); gimp_help_set_help_data (button, gettext (hue_range_table[i].tooltip), NULL); if (i == 0) { gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (button), FALSE); hs_tool->range_radio = button; } gtk_table_attach (GTK_TABLE (table), button, hue_range_table[i].label_col, hue_range_table[i].label_col + 1, hue_range_table[i].label_row, hue_range_table[i].label_row + 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); if (i > 0) { GimpRGB color = { 0.0 }; frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_table_attach (GTK_TABLE (table), frame, hue_range_table[i].frame_col, hue_range_table[i].frame_col + 1, hue_range_table[i].frame_row, hue_range_table[i].frame_row + 1, GTK_SHRINK | GTK_FILL, GTK_SHRINK | GTK_FILL, 0, 0); gtk_widget_show (frame); hs_tool->hue_range_color_area[i - 1] = gimp_color_area_new (&color, GIMP_COLOR_AREA_FLAT, 0); gtk_widget_set_size_request (hs_tool->hue_range_color_area[i - 1], DA_WIDTH, DA_HEIGHT); gtk_container_add (GTK_CONTAINER (frame), hs_tool->hue_range_color_area[i - 1]); gtk_widget_show (hs_tool->hue_range_color_area[i - 1]); } g_signal_connect (button, "toggled", G_CALLBACK (hue_saturation_range_callback), hs_tool); gtk_widget_show (button); } gtk_widget_show (table); label_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); spinner_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL); /* Create the 'Overlap' option slider */ table = gtk_table_new (3, 1, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("_Overlap:"), SLIDER_WIDTH, -1, config->overlap * 100.0, 0.0, 100.0, 1.0, 15.0, 0, TRUE, 0.0, 0.0, NULL, NULL); hs_tool->overlap_data = GTK_ADJUSTMENT (data); gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data)); gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data)); g_object_unref (label_group); g_object_unref (spinner_group); g_signal_connect (data, "value-changed", G_CALLBACK (hue_saturation_overlap_changed), hs_tool); frame = gimp_frame_new (_("Adjust Selected Color")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); /* The table containing sliders */ vbox = gtk_vbox_new (FALSE, 4); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); /* Create the hue scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("_Hue:"), SLIDER_WIDTH, -1, config->hue[config->range] * 180.0, -180.0, 180.0, 1.0, 15.0, 0, TRUE, 0.0, 0.0, NULL, NULL); hs_tool->hue_data = GTK_ADJUSTMENT (data); gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data)); gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data)); g_signal_connect (data, "value-changed", G_CALLBACK (hue_saturation_hue_changed), hs_tool); /* Create the lightness scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("_Lightness:"), SLIDER_WIDTH, -1, config->lightness[config->range] * 100.0, -100.0, 100.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); hs_tool->lightness_data = GTK_ADJUSTMENT (data); gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data)); gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data)); g_signal_connect (data, "value-changed", G_CALLBACK (hue_saturation_lightness_changed), hs_tool); /* Create the saturation scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2, _("_Saturation:"), SLIDER_WIDTH, -1, config->saturation[config->range] * 100.0, -100.0, 100.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); hs_tool->saturation_data = GTK_ADJUSTMENT (data); gtk_size_group_add_widget (label_group, GIMP_SCALE_ENTRY_LABEL (data)); gtk_size_group_add_widget (spinner_group, GIMP_SCALE_ENTRY_SPINBUTTON (data)); g_signal_connect (hs_tool->saturation_data, "value-changed", G_CALLBACK (hue_saturation_saturation_changed), hs_tool); hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); button = gtk_button_new_with_mnemonic (_("R_eset Color")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (hue_saturation_range_reset_callback), hs_tool); gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (hs_tool->range_radio), config->range); hue_saturation_update_color_areas (hs_tool); }
static void gimp_color_balance_tool_dialog (GimpImageMapTool *image_map_tool) { GimpColorBalanceTool *cb_tool = GIMP_COLOR_BALANCE_TOOL (image_map_tool); GimpColorBalanceConfig *config = cb_tool->config; GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *table; GtkWidget *button; GtkWidget *frame; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); frame = gimp_enum_radio_frame_new (GIMP_TYPE_TRANSFER_MODE, gtk_label_new (_("Select Range to Adjust")), G_CALLBACK (color_balance_range_callback), cb_tool, &cb_tool->range_radio); gimp_int_radio_group_set_active (GTK_RADIO_BUTTON (cb_tool->range_radio), config->range); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); frame = gimp_frame_new (_("Adjust Color Levels")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); /* The table containing sliders */ table = gtk_table_new (3, 4, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); cb_tool->cyan_red_adj = create_levels_scale (config->cyan_red[config->range] * 100.0, _("Cyan"), _("Red"), table, 0); g_signal_connect (cb_tool->cyan_red_adj, "value-changed", G_CALLBACK (color_balance_cr_changed), cb_tool); cb_tool->magenta_green_adj = create_levels_scale (config->magenta_green[config->range] * 100.0, _("Magenta"), _("Green"), table, 1); g_signal_connect (cb_tool->magenta_green_adj, "value-changed", G_CALLBACK (color_balance_mg_changed), cb_tool); cb_tool->yellow_blue_adj = create_levels_scale (config->yellow_blue[config->range] * 100.0, _("Yellow"), _("Blue"), table, 2); g_signal_connect (cb_tool->yellow_blue_adj, "value-changed", G_CALLBACK (color_balance_yb_changed), cb_tool); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); button = gtk_button_new_with_mnemonic (_("R_eset Range")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (color_balance_range_reset_callback), cb_tool); cb_tool->preserve_toggle = gtk_check_button_new_with_mnemonic (_("Preserve _luminosity")); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (cb_tool->preserve_toggle), config->preserve_luminosity); gtk_box_pack_end (GTK_BOX (main_vbox), cb_tool->preserve_toggle, FALSE, FALSE, 0); gtk_widget_show (cb_tool->preserve_toggle); g_signal_connect (cb_tool->preserve_toggle, "toggled", G_CALLBACK (color_balance_preserve_toggled), cb_tool); }
static void gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool) { GimpColorizeTool *col_tool = GIMP_COLORIZE_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *table; GtkWidget *slider; GtkWidget *frame; GtkWidget *vbox; GtkObject *data; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); frame = gimp_frame_new (_("Select Color")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); /* The table containing sliders */ vbox = gtk_vbox_new (FALSE, 6); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); /* Create the hue scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0, _("_Hue:"), SLIDER_WIDTH, SPINNER_WIDTH, col_tool->config->hue * 360.0, 0.0, 360.0, 1.0, 15.0, 0, TRUE, 0.0, 0.0, NULL, NULL); col_tool->hue_data = GTK_ADJUSTMENT (data); slider = GIMP_SCALE_ENTRY_SCALE (data); gtk_range_set_update_policy (GTK_RANGE (slider), GTK_UPDATE_CONTINUOUS); g_signal_connect (data, "value-changed", G_CALLBACK (colorize_hue_changed), col_tool); /* Create the saturation scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 1, _("_Saturation:"), SLIDER_WIDTH, SPINNER_WIDTH, col_tool->config->saturation * 100.0, 0.0, 100.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); col_tool->saturation_data = GTK_ADJUSTMENT (data); slider = GIMP_SCALE_ENTRY_SCALE (data); gtk_range_set_update_policy (GTK_RANGE (slider), GTK_UPDATE_CONTINUOUS); g_signal_connect (data, "value-changed", G_CALLBACK (colorize_saturation_changed), col_tool); /* Create the lightness scale widget */ data = gimp_scale_entry_new (GTK_TABLE (table), 0, 2, _("_Lightness:"), SLIDER_WIDTH, SPINNER_WIDTH, col_tool->config->lightness * 100.0, -100.0, 100.0, 1.0, 10.0, 0, TRUE, 0.0, 0.0, NULL, NULL); col_tool->lightness_data = GTK_ADJUSTMENT (data); slider = GIMP_SCALE_ENTRY_SCALE (data); gtk_range_set_update_policy (GTK_RANGE (slider), GTK_UPDATE_CONTINUOUS); g_signal_connect (data, "value-changed", G_CALLBACK (colorize_lightness_changed), col_tool); }
static void gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool) { GimpCurvesTool *tool = GIMP_CURVES_TOOL (image_map_tool); GimpToolOptions *tool_options = GIMP_TOOL_GET_OPTIONS (image_map_tool); GimpCurvesConfig *config = tool->config; GtkListStore *store; GtkSizeGroup *label_group; GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *hbox2; GtkWidget *label; GtkWidget *frame; GtkWidget *table; GtkWidget *button; GtkWidget *bar; GtkWidget *combo; g_signal_connect (image_map_tool->settings_box, "file-dialog-setup", G_CALLBACK (gimp_curves_tool_export_setup), image_map_tool); main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); label_group = gimp_image_map_tool_dialog_get_label_group (image_map_tool); /* The combo box for selecting channels */ hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_start (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); label = gtk_label_new_with_mnemonic (_("Cha_nnel:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); gtk_size_group_add_widget (label_group, label); store = gimp_enum_store_new_with_range (GIMP_TYPE_HISTOGRAM_CHANNEL, GIMP_HISTOGRAM_VALUE, GIMP_HISTOGRAM_ALPHA); tool->channel_menu = gimp_enum_combo_box_new_with_model (GIMP_ENUM_STORE (store)); g_object_unref (store); gimp_int_combo_box_set_active (GIMP_INT_COMBO_BOX (tool->channel_menu), config->channel); gimp_enum_combo_box_set_stock_prefix (GIMP_ENUM_COMBO_BOX (tool->channel_menu), "gimp-channel"); gtk_box_pack_start (GTK_BOX (hbox), tool->channel_menu, FALSE, FALSE, 0); gtk_widget_show (tool->channel_menu); g_signal_connect (tool->channel_menu, "changed", G_CALLBACK (curves_channel_callback), tool); gtk_label_set_mnemonic_widget (GTK_LABEL (label), tool->channel_menu); button = gtk_button_new_with_mnemonic (_("R_eset Channel")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (curves_channel_reset_callback), tool); /* The histogram scale radio buttons */ hbox2 = gimp_prop_enum_stock_box_new (G_OBJECT (tool_options), "histogram-scale", "gimp-histogram", 0, 0); gtk_box_pack_end (GTK_BOX (hbox), hbox2, FALSE, FALSE, 0); gtk_widget_show (hbox2); /* The table for the color bars and the graph */ table = gtk_table_new (2, 2, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 2); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (main_vbox), table, TRUE, TRUE, 0); /* The left color bar */ vbox = gtk_vbox_new (FALSE, 0); gtk_table_attach (GTK_TABLE (table), vbox, 0, 1, 0, 1, GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (vbox); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (vbox), frame, TRUE, TRUE, RADIUS); gtk_widget_show (frame); tool->yrange = gimp_color_bar_new (GTK_ORIENTATION_VERTICAL); gtk_widget_set_size_request (tool->yrange, BAR_SIZE, -1); gtk_container_add (GTK_CONTAINER (frame), tool->yrange); gtk_widget_show (tool->yrange); /* The curves graph */ frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_table_attach (GTK_TABLE (table), frame, 1, 2, 0, 1, GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL, 0, 0); gtk_widget_show (frame); tool->graph = gimp_curve_view_new (); gtk_widget_set_size_request (tool->graph, GRAPH_SIZE + RADIUS * 2, GRAPH_SIZE + RADIUS * 2); g_object_set (tool->graph, "border-width", RADIUS, "subdivisions", 1, NULL); gimp_curve_view_set_curve (GIMP_CURVE_VIEW (tool->graph), config->curve[config->channel]); gtk_container_add (GTK_CONTAINER (frame), tool->graph); gtk_widget_show (tool->graph); gimp_histogram_options_connect_view (GIMP_HISTOGRAM_OPTIONS (tool_options), GIMP_HISTOGRAM_VIEW (tool->graph)); /* The bottom color bar */ hbox2 = gtk_hbox_new (FALSE, 0); gtk_table_attach (GTK_TABLE (table), hbox2, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_FILL, 0, 0); gtk_widget_show (hbox2); frame = gtk_frame_new (NULL); gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_IN); gtk_box_pack_start (GTK_BOX (hbox2), frame, TRUE, TRUE, RADIUS); gtk_widget_show (frame); vbox = gtk_vbox_new (TRUE, 0); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); tool->xrange = gimp_color_bar_new (GTK_ORIENTATION_HORIZONTAL); gtk_widget_set_size_request (tool->xrange, -1, BAR_SIZE / 2); gtk_box_pack_start (GTK_BOX (vbox), tool->xrange, TRUE, TRUE, 0); gtk_widget_show (tool->xrange); bar = gimp_color_bar_new (GTK_ORIENTATION_HORIZONTAL); gtk_box_pack_start (GTK_BOX (vbox), bar, TRUE, TRUE, 0); gtk_widget_show (bar); gtk_widget_show (table); hbox = gtk_hbox_new (FALSE, 6); gtk_box_pack_end (GTK_BOX (main_vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); label = gtk_label_new_with_mnemonic (_("Curve _type:")); gtk_box_pack_start (GTK_BOX (hbox), label, FALSE, FALSE, 0); gtk_widget_show (label); tool->curve_type = combo = gimp_enum_combo_box_new (GIMP_TYPE_CURVE_TYPE); gimp_enum_combo_box_set_stock_prefix (GIMP_ENUM_COMBO_BOX (combo), "gimp-curve"); gimp_int_combo_box_connect (GIMP_INT_COMBO_BOX (combo), 0, G_CALLBACK (curves_curve_type_callback), tool); gtk_box_pack_start (GTK_BOX (hbox), combo, TRUE, TRUE, 0); gtk_widget_show (combo); gtk_label_set_mnemonic_widget (GTK_LABEL (label), combo); }
static void gimp_color_balance_tool_dialog (GimpImageMapTool *image_map_tool) { GimpColorBalanceTool *cb_tool = GIMP_COLOR_BALANCE_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *vbox; GtkWidget *hbox; GtkWidget *table; GtkWidget *button; GtkWidget *frame; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); frame = gimp_prop_enum_radio_frame_new (image_map_tool->config, "range", _("Select Range to Adjust"), 0, 0); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); frame = gimp_frame_new (_("Adjust Color Levels")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); /* The table containing sliders */ table = gtk_table_new (3, 3, FALSE); gtk_table_set_col_spacings (GTK_TABLE (table), 4); gtk_table_set_row_spacings (GTK_TABLE (table), 2); gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0); gtk_widget_show (table); create_levels_scale (image_map_tool->config, "cyan-red", _("Cyan"), _("Red"), table, 0); create_levels_scale (image_map_tool->config, "magenta-green", _("Magenta"), _("Green"), table, 1); create_levels_scale (image_map_tool->config, "yellow-blue", _("Yellow"), _("Blue"), table, 2); hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 6); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); button = gtk_button_new_with_mnemonic (_("R_eset Range")); gtk_box_pack_end (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); g_signal_connect (button, "clicked", G_CALLBACK (color_balance_range_reset_callback), cb_tool); button = gimp_prop_check_button_new (image_map_tool->config, "preserve-luminosity", _("Preserve _luminosity")); gtk_box_pack_end (GTK_BOX (main_vbox), button, FALSE, FALSE, 0); gtk_widget_show (button); }
static void gimp_colorize_tool_dialog (GimpImageMapTool *image_map_tool) { GimpColorizeTool *col_tool = GIMP_COLORIZE_TOOL (image_map_tool); GtkWidget *main_vbox; GtkWidget *frame; GtkWidget *vbox; GtkWidget *scale; GtkWidget *hbox; GtkWidget *button; main_vbox = gimp_image_map_tool_dialog_get_vbox (image_map_tool); frame = gimp_frame_new (_("Select Color")); gtk_box_pack_start (GTK_BOX (main_vbox), frame, FALSE, FALSE, 0); gtk_widget_show (frame); vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 4); gtk_container_add (GTK_CONTAINER (frame), vbox); gtk_widget_show (vbox); /* Create the hue scale widget */ scale = gimp_prop_spin_scale_new (image_map_tool->config, "hue", _("_Hue"), 1.0 / 230.0, 15.0 / 360.0, 0); gimp_prop_widget_set_factor (scale, 360.0, 1); gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0); gtk_widget_show (scale); /* Create the saturation scale widget */ scale = gimp_prop_spin_scale_new (image_map_tool->config, "saturation", _("_Saturation"), 0.01, 0.1, 0); gimp_prop_widget_set_factor (scale, 100.0, 1); gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0); gtk_widget_show (scale); /* Create the lightness scale widget */ scale = gimp_prop_spin_scale_new (image_map_tool->config, "lightness", _("_Lightness"), 0.01, 0.1, 0); gimp_prop_widget_set_factor (scale, 100.0, 1); gtk_box_pack_start (GTK_BOX (vbox), scale, FALSE, FALSE, 0); gtk_widget_show (scale); /* Create the color button */ hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 4); gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0); gtk_widget_show (hbox); button = gimp_prop_color_button_new (image_map_tool->config, "color", _("Colorize Color"), 128, 24, GIMP_COLOR_AREA_FLAT); gimp_color_button_set_update (GIMP_COLOR_BUTTON (button), TRUE); gimp_color_panel_set_context (GIMP_COLOR_PANEL (button), GIMP_CONTEXT (GIMP_TOOL_GET_OPTIONS (col_tool))); gtk_box_pack_start (GTK_BOX (hbox), button, TRUE, TRUE, 0); gtk_widget_show (button); button = gimp_image_map_tool_add_color_picker (image_map_tool, "colorize", GIMP_STOCK_COLOR_PICKER_GRAY, _("Pick color from image")); gtk_box_pack_start (GTK_BOX (hbox), button, FALSE, FALSE, 0); gtk_widget_show (button); }