added convenience function gimp_display_coords_in_active_drawable().
2002-10-14 Sven Neumann <sven@gimp.org> * app/display/gimpdisplay.[ch]: added convenience function gimp_display_coords_in_active_drawable(). * app/tools/gimpcurvestool.c: indicate the possibility to pick color values from the image by showing a color picker cursor. Made the file selection dialog transient for the tool shell. * app/tools/gimplevelstool.c: made the file selection dialog transient for the tool shell.
This commit is contained in:

committed by
Sven Neumann

parent
7c241ea242
commit
6303579945
12
ChangeLog
12
ChangeLog
@ -1,3 +1,15 @@
|
||||
2002-10-14 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* app/display/gimpdisplay.[ch]: added convenience function
|
||||
gimp_display_coords_in_active_drawable().
|
||||
|
||||
* app/tools/gimpcurvestool.c: indicate the possibility to pick color
|
||||
values from the image by showing a color picker cursor. Made the
|
||||
file selection dialog transient for the tool shell.
|
||||
|
||||
* app/tools/gimplevelstool.c: made the file selection dialog
|
||||
transient for the tool shell.
|
||||
|
||||
2002-10-13 Sven Neumann <sven@gimp.org>
|
||||
|
||||
* themes/Default/images/stock-color-picker-black-18.png
|
||||
|
@ -388,6 +388,34 @@ gimp_display_finish_draw (GimpDisplay *gdisp)
|
||||
}
|
||||
}
|
||||
|
||||
/* utility function to check if the cursor is inside the active drawable */
|
||||
gboolean
|
||||
gimp_display_coords_in_active_drawable (GimpDisplay *gdisp,
|
||||
const GimpCoords *coords)
|
||||
{
|
||||
GimpDrawable *drawable;
|
||||
gint x, y;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DISPLAY (gdisp), FALSE);
|
||||
|
||||
if (!gdisp->gimage)
|
||||
return FALSE;
|
||||
|
||||
if (!(drawable = gimp_image_active_drawable (gdisp->gimage)))
|
||||
return FALSE;
|
||||
|
||||
gimp_drawable_offsets (drawable, &x, &y);
|
||||
|
||||
x = ROUND (coords->x) - x;
|
||||
if (x < 0 || x > gimp_drawable_width (drawable))
|
||||
return FALSE;
|
||||
|
||||
y = ROUND (coords->y) - y;
|
||||
if (y < 0 || y > gimp_drawable_height (drawable))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* private functions */
|
||||
|
||||
|
@ -98,5 +98,7 @@ void gimp_display_flush_now (GimpDisplay *gdisp);
|
||||
|
||||
void gimp_display_finish_draw (GimpDisplay *gdisp);
|
||||
|
||||
gboolean gimp_display_coords_in_active_drawable (GimpDisplay *gdisp,
|
||||
const GimpCoords *coords);
|
||||
|
||||
#endif /* __GIMP_DISPLAY_H__ */
|
||||
|
@ -388,6 +388,34 @@ gimp_display_finish_draw (GimpDisplay *gdisp)
|
||||
}
|
||||
}
|
||||
|
||||
/* utility function to check if the cursor is inside the active drawable */
|
||||
gboolean
|
||||
gimp_display_coords_in_active_drawable (GimpDisplay *gdisp,
|
||||
const GimpCoords *coords)
|
||||
{
|
||||
GimpDrawable *drawable;
|
||||
gint x, y;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_DISPLAY (gdisp), FALSE);
|
||||
|
||||
if (!gdisp->gimage)
|
||||
return FALSE;
|
||||
|
||||
if (!(drawable = gimp_image_active_drawable (gdisp->gimage)))
|
||||
return FALSE;
|
||||
|
||||
gimp_drawable_offsets (drawable, &x, &y);
|
||||
|
||||
x = ROUND (coords->x) - x;
|
||||
if (x < 0 || x > gimp_drawable_width (drawable))
|
||||
return FALSE;
|
||||
|
||||
y = ROUND (coords->y) - y;
|
||||
if (y < 0 || y > gimp_drawable_height (drawable))
|
||||
return FALSE;
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/* private functions */
|
||||
|
||||
|
@ -98,5 +98,7 @@ void gimp_display_flush_now (GimpDisplay *gdisp);
|
||||
|
||||
void gimp_display_finish_draw (GimpDisplay *gdisp);
|
||||
|
||||
gboolean gimp_display_coords_in_active_drawable (GimpDisplay *gdisp,
|
||||
const GimpCoords *coords);
|
||||
|
||||
#endif /* __GIMP_DISPLAY_H__ */
|
||||
|
@ -55,11 +55,11 @@
|
||||
#include "libgimp/gimpintl.h"
|
||||
|
||||
|
||||
#define GRAPH 0x1
|
||||
#define XRANGE_TOP 0x2
|
||||
#define XRANGE_BOTTOM 0x4
|
||||
#define YRANGE 0x8
|
||||
#define DRAW 0x10
|
||||
#define GRAPH (1 << 0)
|
||||
#define XRANGE_TOP (1 << 1)
|
||||
#define XRANGE_BOTTOM (1 << 2)
|
||||
#define YRANGE (1 << 3)
|
||||
#define DRAW (1 << 4)
|
||||
#define ALL 0xFF
|
||||
|
||||
/* NB: take care when changing these values: make sure the curve[] array in
|
||||
@ -74,13 +74,13 @@
|
||||
#define RADIUS 3
|
||||
#define MIN_DISTANCE 8
|
||||
|
||||
#define GRAPH_MASK GDK_EXPOSURE_MASK | \
|
||||
#define GRAPH_MASK (GDK_EXPOSURE_MASK | \
|
||||
GDK_POINTER_MOTION_MASK | \
|
||||
GDK_POINTER_MOTION_HINT_MASK | \
|
||||
GDK_ENTER_NOTIFY_MASK | \
|
||||
GDK_LEAVE_NOTIFY_MASK | \
|
||||
GDK_BUTTON_PRESS_MASK | \
|
||||
GDK_BUTTON_RELEASE_MASK | \
|
||||
GDK_BUTTON1_MOTION_MASK
|
||||
GDK_BUTTON1_MOTION_MASK)
|
||||
|
||||
|
||||
/* local function prototypes */
|
||||
@ -107,6 +107,10 @@ static void gimp_curves_tool_motion (GimpTool *tool,
|
||||
guint32 time,
|
||||
GdkModifierType state,
|
||||
GimpDisplay *gdisp);
|
||||
static void gimp_curves_tool_cursor_update (GimpTool *tool,
|
||||
GimpCoords *coords,
|
||||
GdkModifierType state,
|
||||
GimpDisplay *gdisp);
|
||||
|
||||
static void gimp_curves_tool_map (GimpImageMapTool *image_map_tool);
|
||||
static void gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool);
|
||||
@ -115,8 +119,7 @@ static void gimp_curves_tool_reset (GimpImageMapTool *image_map_tool)
|
||||
static void curves_color_update (GimpTool *tool,
|
||||
GimpDisplay *gdisp,
|
||||
GimpDrawable *drawable,
|
||||
gint x,
|
||||
gint y);
|
||||
GimpCoords *coords);
|
||||
static void curves_add_point (GimpCurvesTool *c_tool,
|
||||
gint x,
|
||||
gint y,
|
||||
@ -147,7 +150,6 @@ static gint curves_graph_events (GtkWidget *widget,
|
||||
|
||||
static void file_dialog_create (GimpCurvesTool *c_tool);
|
||||
static void file_dialog_ok_callback (GimpCurvesTool *c_tool);
|
||||
static gboolean file_dialog_cancel_callback (GimpCurvesTool *c_tool);
|
||||
|
||||
static gboolean curves_read_from_file (GimpCurvesTool *c_tool,
|
||||
FILE *file);
|
||||
@ -226,6 +228,7 @@ gimp_curves_tool_class_init (GimpCurvesToolClass *klass)
|
||||
tool_class->button_press = gimp_curves_tool_button_press;
|
||||
tool_class->button_release = gimp_curves_tool_button_release;
|
||||
tool_class->motion = gimp_curves_tool_motion;
|
||||
tool_class->cursor_update = gimp_curves_tool_cursor_update;
|
||||
|
||||
image_map_tool_class->map = gimp_curves_tool_map;
|
||||
image_map_tool_class->dialog = gimp_curves_tool_dialog;
|
||||
@ -249,10 +252,12 @@ gimp_curves_tool_init (GimpCurvesTool *c_tool)
|
||||
curves_init (c_tool->curves);
|
||||
|
||||
for (i = 0;
|
||||
i < (sizeof (c_tool->col_value) /
|
||||
sizeof (c_tool->col_value[0]));
|
||||
i < (sizeof (c_tool->col_value) / sizeof (c_tool->col_value[0]));
|
||||
i++)
|
||||
c_tool->col_value[i] = 0;
|
||||
c_tool->col_value[i] = -1;
|
||||
|
||||
gimp_tool_control_set_tool_cursor (GIMP_TOOL (c_tool)->control,
|
||||
GIMP_COLOR_PICKER_TOOL_CURSOR);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -364,7 +369,8 @@ gimp_curves_tool_button_press (GimpTool *tool,
|
||||
c_tool->color = gimp_drawable_is_rgb (drawable);
|
||||
|
||||
GIMP_IMAGE_MAP_TOOL (tool)->drawable = drawable;
|
||||
GIMP_IMAGE_MAP_TOOL (tool)->image_map = gimp_image_map_new (TRUE, drawable);
|
||||
GIMP_IMAGE_MAP_TOOL (tool)->image_map = gimp_image_map_new (TRUE,
|
||||
drawable);
|
||||
|
||||
gimp_option_menu_set_sensitive
|
||||
(GTK_OPTION_MENU (c_tool->channel_menu),
|
||||
@ -375,7 +381,7 @@ gimp_curves_tool_button_press (GimpTool *tool,
|
||||
|
||||
gimp_tool_control_activate (tool->control);
|
||||
|
||||
curves_color_update (tool, gdisp, drawable, coords->x, coords->y);
|
||||
curves_color_update (tool, gdisp, drawable, coords);
|
||||
curves_update (c_tool, GRAPH | DRAW);
|
||||
}
|
||||
|
||||
@ -393,7 +399,7 @@ gimp_curves_tool_button_release (GimpTool *tool,
|
||||
|
||||
drawable = gimp_image_active_drawable (gdisp->gimage);
|
||||
|
||||
curves_color_update (tool, gdisp, drawable, coords->x, coords->y);
|
||||
curves_color_update (tool, gdisp, drawable, coords);
|
||||
|
||||
if (state & GDK_SHIFT_MASK)
|
||||
{
|
||||
@ -430,58 +436,88 @@ gimp_curves_tool_motion (GimpTool *tool,
|
||||
|
||||
drawable = gimp_image_active_drawable (gdisp->gimage);
|
||||
|
||||
curves_color_update (tool, gdisp, drawable, coords->x, coords->y);
|
||||
curves_color_update (tool, gdisp, drawable, coords);
|
||||
curves_update (c_tool, GRAPH | DRAW);
|
||||
}
|
||||
|
||||
static void
|
||||
gimp_curves_tool_cursor_update (GimpTool *tool,
|
||||
GimpCoords *coords,
|
||||
GdkModifierType state,
|
||||
GimpDisplay *gdisp)
|
||||
{
|
||||
if (gimp_display_coords_in_active_drawable (gdisp, coords))
|
||||
{
|
||||
gimp_tool_control_set_tool_cursor (tool->control,
|
||||
GIMP_COLOR_PICKER_TOOL_CURSOR);
|
||||
gimp_tool_control_set_cursor_modifier (tool->control,
|
||||
(state & (GDK_SHIFT_MASK |
|
||||
GDK_CONTROL_MASK) ?
|
||||
GIMP_CURSOR_MODIFIER_PLUS :
|
||||
GIMP_CURSOR_MODIFIER_NONE));
|
||||
}
|
||||
else
|
||||
{
|
||||
gimp_tool_control_set_tool_cursor (tool->control,
|
||||
GIMP_TOOL_CURSOR_NONE);
|
||||
gimp_tool_control_set_cursor_modifier (tool->control,
|
||||
GIMP_CURSOR_MODIFIER_NONE);
|
||||
}
|
||||
|
||||
GIMP_TOOL_CLASS (parent_class)->cursor_update (tool, coords, state, gdisp);
|
||||
}
|
||||
|
||||
static void
|
||||
curves_color_update (GimpTool *tool,
|
||||
GimpDisplay *gdisp,
|
||||
GimpDrawable *drawable,
|
||||
gint x,
|
||||
gint y)
|
||||
GimpCoords *coords)
|
||||
{
|
||||
GimpCurvesTool *c_tool;
|
||||
guchar *color;
|
||||
gint offx;
|
||||
gint offy;
|
||||
gint maxval;
|
||||
gboolean has_alpha;
|
||||
gboolean is_indexed;
|
||||
GimpImageType sample_type;
|
||||
|
||||
c_tool = GIMP_CURVES_TOOL (tool);
|
||||
gint x;
|
||||
gint y;
|
||||
|
||||
if (! (tool && gimp_tool_control_is_active (tool->control)))
|
||||
return;
|
||||
|
||||
gimp_drawable_offsets (drawable, &offx, &offy);
|
||||
c_tool = GIMP_CURVES_TOOL (tool);
|
||||
|
||||
x -= offx;
|
||||
y -= offy;
|
||||
gimp_drawable_offsets (drawable, &x, &y);
|
||||
|
||||
if (! (color = gimp_image_map_get_color_at (GIMP_IMAGE_MAP_TOOL (tool)->image_map,
|
||||
x, y)))
|
||||
return;
|
||||
x = RINT (coords->x) - x;
|
||||
y = RINT (coords->y) - y;
|
||||
|
||||
sample_type = gimp_drawable_type (drawable);
|
||||
is_indexed = gimp_drawable_is_indexed (drawable);
|
||||
has_alpha = GIMP_IMAGE_TYPE_HAS_ALPHA (sample_type);
|
||||
color = gimp_image_map_get_color_at (GIMP_IMAGE_MAP_TOOL (tool)->image_map,
|
||||
x, y);
|
||||
if (color)
|
||||
{
|
||||
gint maxval;
|
||||
|
||||
c_tool->col_value[GIMP_HISTOGRAM_RED] = color[RED_PIX];
|
||||
c_tool->col_value[GIMP_HISTOGRAM_GREEN] = color[GREEN_PIX];
|
||||
c_tool->col_value[GIMP_HISTOGRAM_BLUE] = color[BLUE_PIX];
|
||||
|
||||
if (has_alpha)
|
||||
if (gimp_drawable_has_alpha (drawable))
|
||||
c_tool->col_value[GIMP_HISTOGRAM_ALPHA] = color[3];
|
||||
|
||||
if (is_indexed)
|
||||
if (gimp_drawable_is_indexed (drawable))
|
||||
c_tool->col_value[GIMP_HISTOGRAM_ALPHA] = color[4];
|
||||
|
||||
maxval = MAX (color[RED_PIX], color[GREEN_PIX]);
|
||||
c_tool->col_value[GIMP_HISTOGRAM_VALUE] = MAX (maxval, color[BLUE_PIX]);
|
||||
|
||||
g_free (color);
|
||||
}
|
||||
else
|
||||
{
|
||||
gint i;
|
||||
|
||||
for (i = 0; i <= GIMP_HISTOGRAM_ALPHA; i++)
|
||||
c_tool->col_value[i] = -1;
|
||||
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -536,6 +572,7 @@ gimp_curves_tool_map (GimpImageMapTool *image_map_tool)
|
||||
(GimpLutFunc) curves_lut_func,
|
||||
c_tool->curves,
|
||||
gimp_drawable_bytes (image_map_tool->drawable));
|
||||
|
||||
gimp_image_map_apply (image_map_tool->image_map,
|
||||
(GimpImageMapApplyFunc) gimp_lut_process_2,
|
||||
c_tool->lut);
|
||||
@ -613,10 +650,14 @@ gimp_curves_tool_dialog (GimpImageMapTool *image_map_tool)
|
||||
c_tool->curve_type_menu, 1, TRUE);
|
||||
|
||||
/* The table for the yrange and the graph */
|
||||
hbox = gtk_hbox_new (FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (vbox), hbox, FALSE, FALSE, 0);
|
||||
gtk_widget_show (hbox);
|
||||
|
||||
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 (vbox), table, FALSE, FALSE, 0);
|
||||
gtk_box_pack_start (GTK_BOX (hbox), table, TRUE, FALSE, 0);
|
||||
|
||||
/* The range drawing area */
|
||||
frame = gtk_frame_new (NULL);
|
||||
@ -946,6 +987,8 @@ curves_update (GimpCurvesTool *c_tool,
|
||||
}
|
||||
}
|
||||
|
||||
if (c_tool->col_value[sel_channel] >= 0)
|
||||
{
|
||||
/* draw the color line */
|
||||
gdk_draw_line (c_tool->pixmap,
|
||||
c_tool->graph->style->black_gc,
|
||||
@ -955,7 +998,8 @@ curves_update (GimpCurvesTool *c_tool,
|
||||
GRAPH_HEIGHT + RADIUS);
|
||||
|
||||
/* and xpos indicator */
|
||||
g_snprintf (buf, sizeof (buf), "x:%d", c_tool->col_value[sel_channel]);
|
||||
g_snprintf (buf, sizeof (buf), "x:%d",
|
||||
c_tool->col_value[sel_channel]);
|
||||
|
||||
if (! c_tool->xpos_layout)
|
||||
c_tool->xpos_layout = gtk_widget_create_pango_layout (c_tool->graph,
|
||||
@ -963,21 +1007,19 @@ curves_update (GimpCurvesTool *c_tool,
|
||||
else
|
||||
pango_layout_set_text (c_tool->xpos_layout, buf, -1);
|
||||
|
||||
if ((c_tool->col_value[sel_channel] + RADIUS) < 127)
|
||||
{
|
||||
offset = RADIUS + 4;
|
||||
}
|
||||
else
|
||||
{
|
||||
pango_layout_get_pixel_size (c_tool->xpos_layout, &offset, &height);
|
||||
|
||||
if ((c_tool->col_value[sel_channel] + RADIUS) < 127)
|
||||
offset = RADIUS + 4;
|
||||
else
|
||||
offset = - (offset + 2);
|
||||
}
|
||||
|
||||
gdk_draw_layout (c_tool->pixmap,
|
||||
c_tool->graph->style->black_gc,
|
||||
c_tool->col_value[sel_channel] + offset,
|
||||
GRAPH_HEIGHT - height - 2,
|
||||
c_tool->xpos_layout);
|
||||
}
|
||||
|
||||
gdk_draw_drawable (c_tool->graph->window,
|
||||
c_tool->graph->style->black_gc,
|
||||
@ -1297,6 +1339,11 @@ curves_graph_events (GtkWidget *widget,
|
||||
curve_print_loc (c_tool, x, 255 - y);
|
||||
break;
|
||||
|
||||
case GDK_LEAVE_NOTIFY:
|
||||
/* redraw to hide position indicator */
|
||||
curves_update (c_tool, GRAPH | DRAW);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -1358,22 +1405,21 @@ file_dialog_create (GimpCurvesTool *c_tool)
|
||||
gtk_container_set_border_width (GTK_CONTAINER (file_dlg), 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (file_dlg->button_area), 2);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg->cancel_button), "clicked",
|
||||
G_CALLBACK (file_dialog_cancel_callback),
|
||||
c_tool);
|
||||
g_object_add_weak_pointer (G_OBJECT (file_dlg),
|
||||
(gpointer) &c_tool->file_dialog);
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (file_dlg),
|
||||
GTK_WINDOW (GIMP_IMAGE_MAP_TOOL (c_tool)->shell));
|
||||
gtk_window_set_destroy_with_parent (GTK_WINDOW (file_dlg), TRUE);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg->ok_button), "clicked",
|
||||
G_CALLBACK (file_dialog_ok_callback),
|
||||
c_tool);
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg->cancel_button), "clicked",
|
||||
G_CALLBACK (gtk_widget_destroy),
|
||||
file_dlg);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg), "delete_event",
|
||||
G_CALLBACK (file_dialog_cancel_callback),
|
||||
c_tool);
|
||||
g_signal_connect_swapped (G_OBJECT (GIMP_IMAGE_MAP_TOOL (c_tool)->shell),
|
||||
"unmap",
|
||||
G_CALLBACK (file_dialog_cancel_callback),
|
||||
c_tool);
|
||||
|
||||
temp = g_build_filename (gimp_directory (), "curves", NULL);
|
||||
temp = g_build_filename (gimp_directory (), "curves", ".", NULL);
|
||||
gtk_file_selection_set_filename (file_dlg, temp);
|
||||
g_free (temp);
|
||||
|
||||
@ -1422,19 +1468,7 @@ file_dialog_ok_callback (GimpCurvesTool *c_tool)
|
||||
if (file)
|
||||
fclose (file);
|
||||
|
||||
file_dialog_cancel_callback (c_tool);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
file_dialog_cancel_callback (GimpCurvesTool *c_tool)
|
||||
{
|
||||
if (c_tool->file_dialog)
|
||||
{
|
||||
gtk_widget_destroy (c_tool->file_dialog);
|
||||
c_tool->file_dialog = NULL;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
@ -1500,7 +1534,8 @@ curves_write_to_file (GimpCurvesTool *c_tool,
|
||||
for (i = 0; i < 5; i++)
|
||||
if (c_tool->curves->curve_type[i] == CURVES_FREE)
|
||||
{
|
||||
/* pick representative points from the curve and make them control points */
|
||||
/* pick representative points from the curve
|
||||
and make them control points */
|
||||
for (j = 0; j <= 8; j++)
|
||||
{
|
||||
index = CLAMP0255 (j * 32);
|
||||
|
@ -55,16 +55,16 @@
|
||||
#include "libgimp/gimpintl.h"
|
||||
|
||||
|
||||
#define LOW_INPUT 0x1
|
||||
#define GAMMA 0x2
|
||||
#define HIGH_INPUT 0x4
|
||||
#define LOW_OUTPUT 0x8
|
||||
#define HIGH_OUTPUT 0x10
|
||||
#define INPUT_LEVELS 0x20
|
||||
#define OUTPUT_LEVELS 0x40
|
||||
#define INPUT_SLIDERS 0x80
|
||||
#define OUTPUT_SLIDERS 0x100
|
||||
#define DRAW 0x200
|
||||
#define LOW_INPUT (1 << 0)
|
||||
#define GAMMA (1 << 1)
|
||||
#define HIGH_INPUT (1 << 2)
|
||||
#define LOW_OUTPUT (1 << 3)
|
||||
#define HIGH_OUTPUT (1 << 4)
|
||||
#define INPUT_LEVELS (1 << 5)
|
||||
#define OUTPUT_LEVELS (1 << 6)
|
||||
#define INPUT_SLIDERS (1 << 7)
|
||||
#define OUTPUT_SLIDERS (1 << 8)
|
||||
#define DRAW (1 << 9)
|
||||
#define ALL 0xFFF
|
||||
|
||||
#define DA_WIDTH GIMP_HISTOGRAM_VIEW_WIDTH
|
||||
@ -72,12 +72,12 @@
|
||||
#define GRADIENT_HEIGHT 15
|
||||
#define CONTROL_HEIGHT DA_HEIGHT - GRADIENT_HEIGHT
|
||||
|
||||
#define LEVELS_DA_MASK GDK_EXPOSURE_MASK | \
|
||||
#define LEVELS_DA_MASK (GDK_EXPOSURE_MASK | \
|
||||
GDK_ENTER_NOTIFY_MASK | \
|
||||
GDK_BUTTON_PRESS_MASK | \
|
||||
GDK_BUTTON_RELEASE_MASK | \
|
||||
GDK_BUTTON1_MOTION_MASK | \
|
||||
GDK_POINTER_MOTION_HINT_MASK
|
||||
GDK_POINTER_MOTION_HINT_MASK)
|
||||
|
||||
|
||||
/* local function prototypes */
|
||||
@ -127,7 +127,6 @@ static gint levels_output_da_events (GtkWidget *widget,
|
||||
|
||||
static void file_dialog_create (GimpLevelsTool *l_tool);
|
||||
static void file_dialog_ok_callback (GimpLevelsTool *l_tool);
|
||||
static gboolean file_dialog_cancel_callback (GimpLevelsTool *l_tool);
|
||||
|
||||
static gboolean levels_read_from_file (GimpLevelsTool *l_tool,
|
||||
FILE *f);
|
||||
@ -1301,22 +1300,21 @@ file_dialog_create (GimpLevelsTool *l_tool)
|
||||
gtk_container_set_border_width (GTK_CONTAINER (file_dlg), 2);
|
||||
gtk_container_set_border_width (GTK_CONTAINER (file_dlg->button_area), 2);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg->cancel_button), "clicked",
|
||||
G_CALLBACK (file_dialog_cancel_callback),
|
||||
l_tool);
|
||||
g_object_add_weak_pointer (G_OBJECT (file_dlg),
|
||||
(gpointer) &l_tool->file_dialog);
|
||||
|
||||
gtk_window_set_transient_for (GTK_WINDOW (file_dlg),
|
||||
GTK_WINDOW (GIMP_IMAGE_MAP_TOOL (l_tool)->shell));
|
||||
gtk_window_set_destroy_with_parent (GTK_WINDOW (file_dlg), TRUE);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg->ok_button), "clicked",
|
||||
G_CALLBACK (file_dialog_ok_callback),
|
||||
l_tool);
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg->cancel_button), "clicked",
|
||||
G_CALLBACK (gtk_widget_destroy),
|
||||
file_dlg);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (file_dlg), "delete_event",
|
||||
G_CALLBACK (file_dialog_cancel_callback),
|
||||
l_tool);
|
||||
g_signal_connect_swapped (G_OBJECT (GIMP_IMAGE_MAP_TOOL (l_tool)->shell),
|
||||
"unmap",
|
||||
G_CALLBACK (file_dialog_cancel_callback),
|
||||
l_tool);
|
||||
|
||||
temp = g_build_filename (gimp_directory (), "levels", NULL);
|
||||
temp = g_build_filename (gimp_directory (), "levels", ".", NULL);
|
||||
gtk_file_selection_set_filename (file_dlg, temp);
|
||||
g_free (temp);
|
||||
|
||||
@ -1365,19 +1363,7 @@ file_dialog_ok_callback (GimpLevelsTool *l_tool)
|
||||
if (file)
|
||||
fclose (file);
|
||||
|
||||
file_dialog_cancel_callback (l_tool);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
file_dialog_cancel_callback (GimpLevelsTool *l_tool)
|
||||
{
|
||||
if (l_tool->file_dialog)
|
||||
{
|
||||
gtk_widget_destroy (l_tool->file_dialog);
|
||||
l_tool->file_dialog = NULL;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
Reference in New Issue
Block a user