added an entry about "Stroke".

2001-09-19  Michael Natterer  <mitch@gimp.org>

	* TODO.xml: added an entry about "Stroke".

	* app/gui/about-dialog.c: use g_timeout and g_source functions
	instead if gtk_timeout stuff.

	* app/widgets/gimpdnd.[ch]: general cleanup:

	- removed the internal enum duplication and use GimpDndType all over
	  the place.
	- added internal GimpDndDataDef entries for all public DND types.
	- code cleanup, some debugging output.
This commit is contained in:
Michael Natterer
2001-09-19 19:06:36 +00:00
committed by Michael Natterer
parent 334911e271
commit 730b394321
6 changed files with 285 additions and 260 deletions

View File

@ -1,3 +1,17 @@
2001-09-19 Michael Natterer <mitch@gimp.org>
* TODO.xml: added an entry about "Stroke".
* app/gui/about-dialog.c: use g_timeout and g_source functions
instead if gtk_timeout stuff.
* app/widgets/gimpdnd.[ch]: general cleanup:
- removed the internal enum duplication and use GimpDndType all over
the place.
- added internal GimpDndDataDef entries for all public DND types.
- code cleanup, some debugging output.
2001-09-19 Sven Neumann <sven@gimp.org> 2001-09-19 Sven Neumann <sven@gimp.org>
* configure.in: require GTK+-1.3.8 and PangoFT2-0.19. * configure.in: require GTK+-1.3.8 and PangoFT2-0.19.
@ -88,7 +102,7 @@
* plug-ins/common/gif.c: applied a patch from David Odin * plug-ins/common/gif.c: applied a patch from David Odin
<dindinx@wanadoo.fr> that brings the GIF plug-in back to live. <dindinx@wanadoo.fr> that brings the GIF plug-in back to live.
* plug-ins/common/.cvsignore * plug-ins/common/.cvsignore
* plug-ins/common/Makefile.am * plug-ins/common/Makefile.am
* plug-ins/common/plugin-defs.pl: build it again. * plug-ins/common/plugin-defs.pl: build it again.

View File

@ -218,6 +218,19 @@
</contact> </contact>
</entry> </entry>
<entry size="small" difficulty="medium" status="0%" target="1.4">
<title>Add Options to "Stroke"</title>
<description>
<p>
The "Stroke" function should be configurable to optionally
stroke inside or outside the current selection only.
</p>
</description>
<contact>
GIMP Developer List &lt;gimp-developer@xcf.berkeley.edu&gt;
</contact>
</entry>
</section> <!-- Tools --> </section> <!-- Tools -->
<section> <section>

View File

@ -67,7 +67,7 @@ static gint about_dialog_key (GtkWidget *widget,
static void about_dialog_tool_drop (GtkWidget *widget, static void about_dialog_tool_drop (GtkWidget *widget,
GimpViewable *viewable, GimpViewable *viewable,
gpointer data); gpointer data);
static gint about_dialog_timer (gpointer data); static gboolean about_dialog_timer (gpointer data);
static GtkWidget *about_dialog = NULL; static GtkWidget *about_dialog = NULL;
@ -408,7 +408,7 @@ about_dialog_unmap (GtkWidget *widget,
{ {
if (timer) if (timer)
{ {
gtk_timeout_remove (timer); g_source_remove (timer);
timer = 0; timer = 0;
} }
} }
@ -423,7 +423,7 @@ about_dialog_logo_expose (GtkWidget *widget,
if (!timer) if (!timer)
{ {
about_dialog_timer (widget); about_dialog_timer (widget);
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
} }
} }
else else
@ -452,8 +452,11 @@ about_dialog_button (GtkWidget *widget,
gpointer data) gpointer data)
{ {
if (timer) if (timer)
gtk_timeout_remove (timer); {
timer = 0; g_source_remove (timer);
timer = 0;
}
frame = 0; frame = 0;
gtk_widget_hide (about_dialog); gtk_widget_hide (about_dialog);
@ -538,14 +541,14 @@ about_dialog_tool_drop (GtkWidget *widget,
gint width = 0; gint width = 0;
gint height = 0; gint height = 0;
gint i; gint i;
if (do_animation) if (do_animation)
return; return;
if (timer) if (timer)
gtk_timeout_remove (timer); g_source_remove (timer);
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
frame = 0; frame = 0;
do_animation = TRUE; do_animation = TRUE;
@ -609,7 +612,7 @@ about_dialog_tool_drop (GtkWidget *widget,
double_speed = TRUE; double_speed = TRUE;
} }
static gint static gboolean
about_dialog_timer (gpointer data) about_dialog_timer (gpointer data)
{ {
gint i, j, k; gint i, j, k;
@ -641,7 +644,7 @@ about_dialog_timer (gpointer data)
do_scrolling = TRUE; do_scrolling = TRUE;
frame = 0; frame = 0;
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
return FALSE; return FALSE;
} }
@ -660,12 +663,12 @@ about_dialog_timer (gpointer data)
{ {
case 1: case 1:
scroll_state = 2; scroll_state = 2;
timer = gtk_timeout_add (700, about_dialog_timer, NULL); timer = g_timeout_add (700, about_dialog_timer, NULL);
return_val = FALSE; return_val = FALSE;
break; break;
case 2: case 2:
scroll_state = 3; scroll_state = 3;
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
return_val = FALSE; return_val = FALSE;
break; break;
} }

View File

@ -67,7 +67,7 @@ static gint about_dialog_key (GtkWidget *widget,
static void about_dialog_tool_drop (GtkWidget *widget, static void about_dialog_tool_drop (GtkWidget *widget,
GimpViewable *viewable, GimpViewable *viewable,
gpointer data); gpointer data);
static gint about_dialog_timer (gpointer data); static gboolean about_dialog_timer (gpointer data);
static GtkWidget *about_dialog = NULL; static GtkWidget *about_dialog = NULL;
@ -408,7 +408,7 @@ about_dialog_unmap (GtkWidget *widget,
{ {
if (timer) if (timer)
{ {
gtk_timeout_remove (timer); g_source_remove (timer);
timer = 0; timer = 0;
} }
} }
@ -423,7 +423,7 @@ about_dialog_logo_expose (GtkWidget *widget,
if (!timer) if (!timer)
{ {
about_dialog_timer (widget); about_dialog_timer (widget);
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
} }
} }
else else
@ -452,8 +452,11 @@ about_dialog_button (GtkWidget *widget,
gpointer data) gpointer data)
{ {
if (timer) if (timer)
gtk_timeout_remove (timer); {
timer = 0; g_source_remove (timer);
timer = 0;
}
frame = 0; frame = 0;
gtk_widget_hide (about_dialog); gtk_widget_hide (about_dialog);
@ -538,14 +541,14 @@ about_dialog_tool_drop (GtkWidget *widget,
gint width = 0; gint width = 0;
gint height = 0; gint height = 0;
gint i; gint i;
if (do_animation) if (do_animation)
return; return;
if (timer) if (timer)
gtk_timeout_remove (timer); g_source_remove (timer);
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
frame = 0; frame = 0;
do_animation = TRUE; do_animation = TRUE;
@ -609,7 +612,7 @@ about_dialog_tool_drop (GtkWidget *widget,
double_speed = TRUE; double_speed = TRUE;
} }
static gint static gboolean
about_dialog_timer (gpointer data) about_dialog_timer (gpointer data)
{ {
gint i, j, k; gint i, j, k;
@ -641,7 +644,7 @@ about_dialog_timer (gpointer data)
do_scrolling = TRUE; do_scrolling = TRUE;
frame = 0; frame = 0;
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
return FALSE; return FALSE;
} }
@ -660,12 +663,12 @@ about_dialog_timer (gpointer data)
{ {
case 1: case 1:
scroll_state = 2; scroll_state = 2;
timer = gtk_timeout_add (700, about_dialog_timer, NULL); timer = g_timeout_add (700, about_dialog_timer, NULL);
return_val = FALSE; return_val = FALSE;
break; break;
case 2: case 2:
scroll_state = 3; scroll_state = 3;
timer = gtk_timeout_add (75, about_dialog_timer, NULL); timer = g_timeout_add (75, about_dialog_timer, NULL);
return_val = FALSE; return_val = FALSE;
break; break;
} }

View File

@ -57,31 +57,6 @@
#define DRAG_ICON_OFFSET -8 #define DRAG_ICON_OFFSET -8
typedef enum
{
GIMP_DND_DATA_NONE,
GIMP_DND_DATA_FIRST,
GIMP_DND_DATA_FILE_URI_LIST = GIMP_DND_DATA_FIRST,
GIMP_DND_DATA_FILE_TEXT_PLAIN,
GIMP_DND_DATA_FILE_NETSCAPE_URL,
GIMP_DND_DATA_COLOR,
GIMP_DND_DATA_IMAGE,
GIMP_DND_DATA_LAYER,
GIMP_DND_DATA_CHANNEL,
GIMP_DND_DATA_LAYER_MASK,
GIMP_DND_DATA_BRUSH,
GIMP_DND_DATA_PATTERN,
GIMP_DND_DATA_GRADIENT,
GIMP_DND_DATA_PALETTE,
GIMP_DND_DATA_BUFFER,
GIMP_DND_DATA_IMAGEFILE,
GIMP_DND_DATA_TOOL,
GIMP_DND_DATA_LAST = GIMP_DND_DATA_TOOL
} GimpDndDataType;
typedef GtkWidget * (* GimpDndGetIconFunc) (GtkWidget *widget, typedef GtkWidget * (* GimpDndGetIconFunc) (GtkWidget *widget,
GCallback get_data_func, GCallback get_data_func,
gpointer get_data_data); gpointer get_data_data);
@ -120,56 +95,54 @@ static GtkWidget * gimp_dnd_get_color_icon (GtkWidget *widget,
GCallback get_color_func, GCallback get_color_func,
gpointer get_color_data); gpointer get_color_data);
static guchar * gimp_dnd_get_color_data (GtkWidget *widget,
GCallback get_color_func,
gpointer get_color_data,
gint *format,
gint *length);
static guchar * gimp_dnd_get_image_data (GtkWidget *widget,
GCallback get_image_func,
gpointer get_image_data,
gint *format,
gint *length);
static guchar * gimp_dnd_get_drawable_data (GtkWidget *widget,
GCallback get_drawable_func,
gpointer get_drawable_data,
gint *format,
gint *length);
static guchar * gimp_dnd_get_data_data (GtkWidget *widget,
GCallback get_data_func,
gpointer get_data_data,
gint *format,
gint *length);
static guchar * gimp_dnd_get_tool_data (GtkWidget *widget,
GCallback get_tool_func,
gpointer get_tool_data,
gint *format,
gint *length);
static void gimp_dnd_set_file_data (GtkWidget *widget, static void gimp_dnd_set_file_data (GtkWidget *widget,
GCallback set_color_func, GCallback set_color_func,
gpointer set_color_data, gpointer set_color_data,
guchar *vals, guchar *vals,
gint format, gint format,
gint length); gint length);
static guchar * gimp_dnd_get_color_data (GtkWidget *widget,
GCallback get_color_func,
gpointer get_color_data,
gint *format,
gint *length);
static void gimp_dnd_set_color_data (GtkWidget *widget, static void gimp_dnd_set_color_data (GtkWidget *widget,
GCallback set_color_func, GCallback set_color_func,
gpointer set_color_data, gpointer set_color_data,
guchar *vals, guchar *vals,
gint format, gint format,
gint length); gint length);
static guchar * gimp_dnd_get_image_data (GtkWidget *widget,
GCallback get_image_func,
gpointer get_image_data,
gint *format,
gint *length);
static void gimp_dnd_set_image_data (GtkWidget *widget, static void gimp_dnd_set_image_data (GtkWidget *widget,
GCallback set_image_func, GCallback set_image_func,
gpointer set_image_data, gpointer set_image_data,
guchar *vals, guchar *vals,
gint format, gint format,
gint length); gint length);
static guchar * gimp_dnd_get_drawable_data (GtkWidget *widget,
GCallback get_drawable_func,
gpointer get_drawable_data,
gint *format,
gint *length);
static void gimp_dnd_set_drawable_data (GtkWidget *widget, static void gimp_dnd_set_drawable_data (GtkWidget *widget,
GCallback set_drawable_func, GCallback set_drawable_func,
gpointer set_drawable_data, gpointer set_drawable_data,
guchar *vals, guchar *vals,
gint format, gint format,
gint length); gint length);
static guchar * gimp_dnd_get_data_data (GtkWidget *widget,
GCallback get_data_func,
gpointer get_data_data,
gint *format,
gint *length);
static void gimp_dnd_set_brush_data (GtkWidget *widget, static void gimp_dnd_set_brush_data (GtkWidget *widget,
GCallback set_brush_func, GCallback set_brush_func,
gpointer set_brush_data, gpointer set_brush_data,
@ -214,6 +187,7 @@ static void gimp_dnd_set_tool_data (GtkWidget *widget,
gint length); gint length);
static GimpDndDataDef dnd_data_defs[] = static GimpDndDataDef dnd_data_defs[] =
{ {
{ {
@ -315,6 +289,28 @@ static GimpDndDataDef dnd_data_defs[] =
gimp_dnd_set_drawable_data, gimp_dnd_set_drawable_data,
}, },
{
GIMP_TARGET_COMPONENT,
NULL,
NULL,
NULL,
NULL,
NULL,
},
{
GIMP_TARGET_PATH,
NULL,
NULL,
NULL,
NULL,
NULL,
},
{ {
GIMP_TARGET_BRUSH, GIMP_TARGET_BRUSH,
@ -371,10 +367,10 @@ static GimpDndDataDef dnd_data_defs[] =
}, },
{ {
GIMP_TARGET_TOOL, GIMP_TARGET_IMAGEFILE,
"gimp_dnd_set_tool_func", "gimp_dnd_set_imagefile_func",
"gimp_dnd_set_tool_data", "gimp_dnd_set_imagefile_data",
gimp_dnd_get_viewable_icon, gimp_dnd_get_viewable_icon,
gimp_dnd_get_data_data, gimp_dnd_get_data_data,
@ -382,14 +378,25 @@ static GimpDndDataDef dnd_data_defs[] =
}, },
{ {
GIMP_TARGET_IMAGEFILE, GIMP_TARGET_TOOL,
"gimp_dnd_set_imagefile_func", "gimp_dnd_set_tool_func",
"gimp_dnd_set_imagefile_data", "gimp_dnd_set_tool_data",
gimp_dnd_get_viewable_icon, gimp_dnd_get_viewable_icon,
gimp_dnd_get_tool_data, gimp_dnd_get_data_data,
gimp_dnd_set_tool_data gimp_dnd_set_tool_data
},
{
GIMP_TARGET_DIALOG,
NULL,
NULL,
NULL,
NULL,
NULL
} }
}; };
@ -403,21 +410,21 @@ gimp_dnd_data_drag_begin (GtkWidget *widget,
GdkDragContext *context, GdkDragContext *context,
gpointer data) gpointer data)
{ {
GimpDndDataType data_type; GimpDndType data_type;
GCallback get_data_func; GCallback get_data_func;
gpointer get_data_data; gpointer get_data_data;
GtkWidget *icon_widget; GtkWidget *icon_widget;
data_type = (GimpDndDataType) g_object_get_data (G_OBJECT (widget), data_type = (GimpDndType) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_type"); "gimp-dnd-get-data-type");
if (! data_type) if (! data_type)
return; return;
get_data_func = (GCallback) g_object_get_data (G_OBJECT (widget), get_data_func = (GCallback) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_func"); "gimp-dnd-get-data-func");
get_data_data = (gpointer) g_object_get_data (G_OBJECT (widget), get_data_data = (gpointer) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_data"); "gimp-dnd-get-data-data");
if (! get_data_func) if (! get_data_func)
return; return;
@ -467,26 +474,26 @@ gimp_dnd_data_drag_handle (GtkWidget *widget,
guint time, guint time,
gpointer data) gpointer data)
{ {
GimpDndDataType data_type; GimpDndType data_type;
GCallback get_data_func; GCallback get_data_func;
gpointer get_data_data; gpointer get_data_data;
gint format; gint format;
guchar *vals; guchar *vals;
gint length; gint length;
data_type = data_type =
(GimpDndDataType) g_object_get_data (G_OBJECT (widget), (GimpDndType) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_type"); "gimp-dnd-get-data-type");
if (! data_type) if (! data_type)
return; return;
get_data_func = get_data_func =
(GCallback) g_object_get_data (G_OBJECT (widget), (GCallback) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_func"); "gimp-dnd-get-data-func");
get_data_data = get_data_data =
(gpointer) g_object_get_data (G_OBJECT (widget), (gpointer) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_data"); "gimp-dnd-get-data-data");
if (! get_data_func) if (! get_data_func)
return; return;
@ -518,15 +525,17 @@ gimp_dnd_data_drop_handle (GtkWidget *widget,
guint time, guint time,
gpointer data) gpointer data)
{ {
GCallback set_data_func; GCallback set_data_func;
gpointer set_data_data; gpointer set_data_data;
GimpDndDataType data_type; GimpDndType data_type;
if (selection_data->length < 0) if (selection_data->length < 0)
return; return;
for (data_type = GIMP_DND_DATA_FIRST; g_print ("gimp_dnd_data_drop_handle(%d)\n", info);
data_type <= GIMP_DND_DATA_LAST;
for (data_type = GIMP_DND_TYPE_NONE + 1;
data_type <= GIMP_DND_TYPE_LAST;
data_type++) data_type++)
{ {
if (dnd_data_defs[data_type].target_entry.info == info) if (dnd_data_defs[data_type].target_entry.info == info)
@ -534,7 +543,7 @@ gimp_dnd_data_drop_handle (GtkWidget *widget,
set_data_func = (GCallback) set_data_func = (GCallback)
g_object_get_data (G_OBJECT (widget), g_object_get_data (G_OBJECT (widget),
dnd_data_defs[data_type].set_data_func_name); dnd_data_defs[data_type].set_data_func_name);
set_data_data = (gpointer) set_data_data =
g_object_get_data (G_OBJECT (widget), g_object_get_data (G_OBJECT (widget),
dnd_data_defs[data_type].set_data_data_name); dnd_data_defs[data_type].set_data_data_name);
@ -554,16 +563,16 @@ gimp_dnd_data_drop_handle (GtkWidget *widget,
} }
static void static void
gimp_dnd_data_source_set (GimpDndDataType data_type, gimp_dnd_data_source_set (GimpDndType data_type,
GtkWidget *widget, GtkWidget *widget,
GCallback get_data_func, GCallback get_data_func,
gpointer get_data_data) gpointer get_data_data)
{ {
gboolean drag_connected; gboolean drag_connected;
drag_connected = drag_connected =
(gboolean) g_object_get_data (G_OBJECT (widget), GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"gimp_dnd_drag_connected"); "gimp-dnd-drag-connected"));
if (! drag_connected) if (! drag_connected)
{ {
@ -577,15 +586,15 @@ gimp_dnd_data_source_set (GimpDndDataType data_type,
G_CALLBACK (gimp_dnd_data_drag_handle), G_CALLBACK (gimp_dnd_data_drag_handle),
NULL); NULL);
g_object_set_data (G_OBJECT (widget), "gimp_dnd_drag_connected", g_object_set_data (G_OBJECT (widget), "gimp-dnd-drag-connected",
(gpointer) TRUE); GINT_TO_POINTER (TRUE));
} }
g_object_set_data (G_OBJECT (widget), "gimp_dnd_get_data_type", g_object_set_data (G_OBJECT (widget), "gimp-dnd-get-data-type",
(gpointer) data_type); (gpointer) data_type);
g_object_set_data (G_OBJECT (widget), "gimp_dnd_get_data_func", g_object_set_data (G_OBJECT (widget), "gimp-dnd-get-data-func",
get_data_func); get_data_func);
g_object_set_data (G_OBJECT (widget), "gimp_dnd_get_data_data", g_object_set_data (G_OBJECT (widget), "gimp-dnd-get-data-data",
get_data_data); get_data_data);
} }
@ -594,28 +603,29 @@ gimp_dnd_data_source_unset (GtkWidget *widget)
{ {
gboolean drag_connected; gboolean drag_connected;
drag_connected = (gboolean) g_object_get_data (G_OBJECT (widget), drag_connected =
"gimp_dnd_drag_connected"); GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"gimp-dnd-drag-connected"));
if (! drag_connected) if (! drag_connected)
return; return;
g_object_set_data (G_OBJECT (widget), "gimp_dnd_get_data_type", NULL); g_object_set_data (G_OBJECT (widget), "gimp-dnd-get-data-type", NULL);
g_object_set_data (G_OBJECT (widget), "gimp_dnd_get_data_func", NULL); g_object_set_data (G_OBJECT (widget), "gimp-dnd-get-data-func", NULL);
g_object_set_data (G_OBJECT (widget), "gimp_dnd_get_data_data", NULL); g_object_set_data (G_OBJECT (widget), "gimp-dnd-get-data-data", NULL);
} }
static void static void
gimp_dnd_data_dest_set (GimpDndDataType data_type, gimp_dnd_data_dest_set (GimpDndType data_type,
GtkWidget *widget, GtkWidget *widget,
gpointer set_data_func, gpointer set_data_func,
gpointer set_data_data) gpointer set_data_data)
{ {
gboolean drop_connected; gboolean drop_connected;
drop_connected = drop_connected =
(gboolean) g_object_get_data (G_OBJECT (widget), GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"gimp_dnd_drop_connected"); "gimp-dnd-drop-connected"));
if (! drop_connected) if (! drop_connected)
{ {
@ -623,8 +633,8 @@ gimp_dnd_data_dest_set (GimpDndDataType data_type,
G_CALLBACK (gimp_dnd_data_drop_handle), G_CALLBACK (gimp_dnd_data_drop_handle),
NULL); NULL);
g_object_set_data (G_OBJECT (widget), "gimp_dnd_drop_connected", g_object_set_data (G_OBJECT (widget), "gimp-dnd-drop-connected",
(gpointer) TRUE); GINT_TO_POINTER (TRUE));
} }
g_object_set_data (G_OBJECT (widget), g_object_set_data (G_OBJECT (widget),
@ -636,13 +646,14 @@ gimp_dnd_data_dest_set (GimpDndDataType data_type,
} }
static void static void
gimp_dnd_data_dest_unset (GimpDndDataType data_type, gimp_dnd_data_dest_unset (GimpDndType data_type,
GtkWidget *widget) GtkWidget *widget)
{ {
gboolean drop_connected; gboolean drop_connected;
drop_connected = (gboolean) g_object_get_data (G_OBJECT (widget), drop_connected =
"gimp_dnd_drop_connected"); GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"gimp-dnd-drop-connected"));
if (! drop_connected) if (! drop_connected)
return; return;
@ -729,13 +740,13 @@ gimp_dnd_file_dest_set (GtkWidget *widget,
GimpDndDropFileFunc set_file_func, GimpDndDropFileFunc set_file_func,
gpointer data) gpointer data)
{ {
gimp_dnd_data_dest_set (GIMP_DND_DATA_FILE_URI_LIST, widget, gimp_dnd_data_dest_set (GIMP_DND_TYPE_URI_LIST, widget,
G_CALLBACK (set_file_func), G_CALLBACK (set_file_func),
data); data);
gimp_dnd_data_dest_set (GIMP_DND_DATA_FILE_TEXT_PLAIN, widget, gimp_dnd_data_dest_set (GIMP_DND_TYPE_TEXT_PLAIN, widget,
G_CALLBACK (set_file_func), G_CALLBACK (set_file_func),
data); data);
gimp_dnd_data_dest_set (GIMP_DND_DATA_FILE_NETSCAPE_URL, widget, gimp_dnd_data_dest_set (GIMP_DND_TYPE_NETSCAPE_URL, widget,
G_CALLBACK (set_file_func), G_CALLBACK (set_file_func),
data); data);
} }
@ -743,9 +754,9 @@ gimp_dnd_file_dest_set (GtkWidget *widget,
void void
gimp_dnd_file_dest_unset (GtkWidget *widget) gimp_dnd_file_dest_unset (GtkWidget *widget)
{ {
gimp_dnd_data_dest_unset (GIMP_DND_DATA_FILE_URI_LIST, widget); gimp_dnd_data_dest_unset (GIMP_DND_TYPE_URI_LIST, widget);
gimp_dnd_data_dest_unset (GIMP_DND_DATA_FILE_TEXT_PLAIN, widget); gimp_dnd_data_dest_unset (GIMP_DND_TYPE_TEXT_PLAIN, widget);
gimp_dnd_data_dest_unset (GIMP_DND_DATA_FILE_NETSCAPE_URL, widget); gimp_dnd_data_dest_unset (GIMP_DND_TYPE_NETSCAPE_URL, widget);
} }
void void
@ -848,7 +859,7 @@ gimp_dnd_color_source_set (GtkWidget *widget,
GimpDndDragColorFunc get_color_func, GimpDndDragColorFunc get_color_func,
gpointer data) gpointer data)
{ {
gimp_dnd_data_source_set (GIMP_DND_DATA_COLOR, widget, gimp_dnd_data_source_set (GIMP_DND_TYPE_COLOR, widget,
G_CALLBACK (get_color_func), G_CALLBACK (get_color_func),
data); data);
} }
@ -858,7 +869,7 @@ gimp_dnd_color_dest_set (GtkWidget *widget,
GimpDndDropColorFunc set_color_func, GimpDndDropColorFunc set_color_func,
gpointer data) gpointer data)
{ {
gimp_dnd_data_dest_set (GIMP_DND_DATA_COLOR, widget, gimp_dnd_data_dest_set (GIMP_DND_TYPE_COLOR, widget,
G_CALLBACK (set_color_func), G_CALLBACK (set_color_func),
data); data);
} }
@ -866,13 +877,13 @@ gimp_dnd_color_dest_set (GtkWidget *widget,
void void
gimp_dnd_color_dest_unset (GtkWidget *widget) gimp_dnd_color_dest_unset (GtkWidget *widget)
{ {
gimp_dnd_data_dest_unset (GIMP_DND_DATA_COLOR, widget); gimp_dnd_data_dest_unset (GIMP_DND_TYPE_COLOR, widget);
} }
/*********************************************/ /*******************************************/
/* GimpViewable (by GtkType) dnd functions */ /* GimpViewable (by GType) dnd functions */
/*********************************************/ /*******************************************/
static GtkWidget * static GtkWidget *
gimp_dnd_get_viewable_icon (GtkWidget *widget, gimp_dnd_get_viewable_icon (GtkWidget *widget,
@ -893,59 +904,59 @@ gimp_dnd_get_viewable_icon (GtkWidget *widget,
return preview; return preview;
} }
static GimpDndDataType static GimpDndType
gimp_dnd_data_type_get_by_gtk_type (GtkType type) gimp_dnd_data_type_get_by_g_type (GType type)
{ {
GimpDndDataType dnd_type = GIMP_DND_DATA_NONE; GimpDndType dnd_type = GIMP_DND_TYPE_NONE;
if (gtk_type_is_a (type, GIMP_TYPE_IMAGE)) if (g_type_is_a (type, GIMP_TYPE_IMAGE))
{ {
dnd_type = GIMP_DND_DATA_IMAGE; dnd_type = GIMP_DND_TYPE_IMAGE;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_LAYER)) else if (g_type_is_a (type, GIMP_TYPE_LAYER))
{ {
dnd_type = GIMP_DND_DATA_LAYER; dnd_type = GIMP_DND_TYPE_LAYER;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_LAYER_MASK)) else if (g_type_is_a (type, GIMP_TYPE_LAYER_MASK))
{ {
dnd_type = GIMP_DND_DATA_LAYER_MASK; dnd_type = GIMP_DND_TYPE_LAYER_MASK;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_CHANNEL)) else if (g_type_is_a (type, GIMP_TYPE_CHANNEL))
{ {
dnd_type = GIMP_DND_DATA_CHANNEL; dnd_type = GIMP_DND_TYPE_CHANNEL;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_BRUSH)) else if (g_type_is_a (type, GIMP_TYPE_BRUSH))
{ {
dnd_type = GIMP_DND_DATA_BRUSH; dnd_type = GIMP_DND_TYPE_BRUSH;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_PATTERN)) else if (g_type_is_a (type, GIMP_TYPE_PATTERN))
{ {
dnd_type = GIMP_DND_DATA_PATTERN; dnd_type = GIMP_DND_TYPE_PATTERN;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_GRADIENT)) else if (g_type_is_a (type, GIMP_TYPE_GRADIENT))
{ {
dnd_type = GIMP_DND_DATA_GRADIENT; dnd_type = GIMP_DND_TYPE_GRADIENT;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_PALETTE)) else if (g_type_is_a (type, GIMP_TYPE_PALETTE))
{ {
dnd_type = GIMP_DND_DATA_PALETTE; dnd_type = GIMP_DND_TYPE_PALETTE;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_BUFFER)) else if (g_type_is_a (type, GIMP_TYPE_BUFFER))
{ {
dnd_type = GIMP_DND_DATA_BUFFER; dnd_type = GIMP_DND_TYPE_BUFFER;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_IMAGEFILE)) else if (g_type_is_a (type, GIMP_TYPE_IMAGEFILE))
{ {
dnd_type = GIMP_DND_DATA_IMAGEFILE; dnd_type = GIMP_DND_TYPE_IMAGEFILE;
} }
else if (gtk_type_is_a (type, GIMP_TYPE_TOOL_INFO)) else if (g_type_is_a (type, GIMP_TYPE_TOOL_INFO))
{ {
dnd_type = GIMP_DND_DATA_TOOL; dnd_type = GIMP_DND_TYPE_TOOL;
} }
else else
{ {
g_warning ("%s(): unsupported GtkType \"%s\"", g_warning ("%s(): unsupported GType \"%s\"",
G_GNUC_FUNCTION, gtk_type_name (type)); G_GNUC_FUNCTION, g_type_name (type));
} }
return dnd_type; return dnd_type;
@ -954,16 +965,16 @@ gimp_dnd_data_type_get_by_gtk_type (GtkType type)
void void
gimp_gtk_drag_source_set_by_type (GtkWidget *widget, gimp_gtk_drag_source_set_by_type (GtkWidget *widget,
GdkModifierType start_button_mask, GdkModifierType start_button_mask,
GtkType type, GType type,
GdkDragAction actions) GdkDragAction actions)
{ {
GimpDndDataType dnd_type; GimpDndType dnd_type;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
dnd_type = gimp_dnd_data_type_get_by_gtk_type (type); dnd_type = gimp_dnd_data_type_get_by_g_type (type);
if (dnd_type == GIMP_DND_DATA_NONE) if (dnd_type == GIMP_DND_TYPE_NONE)
return; return;
gtk_drag_source_set (widget, start_button_mask, gtk_drag_source_set (widget, start_button_mask,
@ -975,16 +986,16 @@ gimp_gtk_drag_source_set_by_type (GtkWidget *widget,
void void
gimp_gtk_drag_dest_set_by_type (GtkWidget *widget, gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
GtkDestDefaults flags, GtkDestDefaults flags,
GtkType type, GType type,
GdkDragAction actions) GdkDragAction actions)
{ {
GimpDndDataType dnd_type; GimpDndType dnd_type;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
dnd_type = gimp_dnd_data_type_get_by_gtk_type (type); dnd_type = gimp_dnd_data_type_get_by_g_type (type);
if (dnd_type == GIMP_DND_DATA_NONE) if (dnd_type == GIMP_DND_TYPE_NONE)
return; return;
gtk_drag_dest_set (widget, flags, gtk_drag_dest_set (widget, flags,
@ -995,18 +1006,18 @@ gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
void void
gimp_dnd_viewable_source_set (GtkWidget *widget, gimp_dnd_viewable_source_set (GtkWidget *widget,
GtkType type, GType type,
GimpDndDragViewableFunc get_viewable_func, GimpDndDragViewableFunc get_viewable_func,
gpointer data) gpointer data)
{ {
GimpDndDataType dnd_type; GimpDndType dnd_type;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (get_viewable_func != NULL); g_return_if_fail (get_viewable_func != NULL);
dnd_type = gimp_dnd_data_type_get_by_gtk_type (type); dnd_type = gimp_dnd_data_type_get_by_g_type (type);
if (dnd_type == GIMP_DND_DATA_NONE) if (dnd_type == GIMP_DND_TYPE_NONE)
return; return;
gimp_dnd_data_source_set (dnd_type, widget, gimp_dnd_data_source_set (dnd_type, widget,
@ -1016,15 +1027,15 @@ gimp_dnd_viewable_source_set (GtkWidget *widget,
void void
gimp_dnd_viewable_source_unset (GtkWidget *widget, gimp_dnd_viewable_source_unset (GtkWidget *widget,
GtkType type) GType type)
{ {
GimpDndDataType dnd_type; GimpDndType dnd_type;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
dnd_type = gimp_dnd_data_type_get_by_gtk_type (type); dnd_type = gimp_dnd_data_type_get_by_g_type (type);
if (dnd_type == GIMP_DND_DATA_NONE) if (dnd_type == GIMP_DND_TYPE_NONE)
return; return;
gimp_dnd_data_source_unset (widget); gimp_dnd_data_source_unset (widget);
@ -1032,18 +1043,18 @@ gimp_dnd_viewable_source_unset (GtkWidget *widget,
void void
gimp_dnd_viewable_dest_set (GtkWidget *widget, gimp_dnd_viewable_dest_set (GtkWidget *widget,
GtkType type, GType type,
GimpDndDropViewableFunc set_viewable_func, GimpDndDropViewableFunc set_viewable_func,
gpointer data) gpointer data)
{ {
GimpDndDataType dnd_type; GimpDndType dnd_type;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
g_return_if_fail (set_viewable_func != NULL); g_return_if_fail (set_viewable_func != NULL);
dnd_type = gimp_dnd_data_type_get_by_gtk_type (type); dnd_type = gimp_dnd_data_type_get_by_g_type (type);
if (dnd_type == GIMP_DND_DATA_NONE) if (dnd_type == GIMP_DND_TYPE_NONE)
return; return;
gimp_dnd_data_dest_set (dnd_type, widget, gimp_dnd_data_dest_set (dnd_type, widget,
@ -1053,15 +1064,15 @@ gimp_dnd_viewable_dest_set (GtkWidget *widget,
void void
gimp_dnd_viewable_dest_unset (GtkWidget *widget, gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GtkType type) GType type)
{ {
GimpDndDataType dnd_type; GimpDndType dnd_type;
g_return_if_fail (GTK_IS_WIDGET (widget)); g_return_if_fail (GTK_IS_WIDGET (widget));
dnd_type = gimp_dnd_data_type_get_by_gtk_type (type); dnd_type = gimp_dnd_data_type_get_by_g_type (type);
if (dnd_type == GIMP_DND_DATA_NONE) if (dnd_type == GIMP_DND_TYPE_NONE)
return; return;
gimp_dnd_data_dest_unset (dnd_type, widget); gimp_dnd_data_dest_unset (dnd_type, widget);
@ -1070,25 +1081,25 @@ gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GimpViewable * GimpViewable *
gimp_dnd_get_drag_data (GtkWidget *widget) gimp_dnd_get_drag_data (GtkWidget *widget)
{ {
GimpDndDataType data_type; GimpDndType data_type;
GimpDndDragViewableFunc get_data_func; GimpDndDragViewableFunc get_data_func;
gpointer get_data_data; gpointer get_data_data;
g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL); g_return_val_if_fail (GTK_IS_WIDGET (widget), NULL);
data_type = data_type =
(GimpDndDataType) g_object_get_data (G_OBJECT (widget), (GimpDndType) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_type"); "gimp-dnd-get-data-type");
if (! data_type) if (! data_type)
return NULL; return NULL;
get_data_func = get_data_func =
(GimpDndDragViewableFunc) g_object_get_data (G_OBJECT (widget), (GimpDndDragViewableFunc) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_func"); "gimp-dnd-get-data-func");
get_data_data = get_data_data =
(gpointer) g_object_get_data (G_OBJECT (widget), (gpointer) g_object_get_data (G_OBJECT (widget),
"gimp_dnd_get_data_data"); "gimp-dnd-get-data-data");
if (! get_data_func) if (! get_data_func)
return NULL; return NULL;
@ -1277,6 +1288,8 @@ gimp_dnd_set_brush_data (GtkWidget *widget,
name = (gchar *) vals; name = (gchar *) vals;
g_print ("gimp_dnd_set_brush_data() got >>%s<<\n", name);
if (strcmp (name, "Standard") == 0) if (strcmp (name, "Standard") == 0)
brush = GIMP_BRUSH (gimp_brush_get_standard ()); brush = GIMP_BRUSH (gimp_brush_get_standard ());
else else
@ -1472,33 +1485,6 @@ gimp_dnd_set_imagefile_data (GtkWidget *widget,
/* tool dnd functions */ /* tool dnd functions */
/************************/ /************************/
static guchar *
gimp_dnd_get_tool_data (GtkWidget *widget,
GCallback get_tool_func,
gpointer get_tool_data,
gint *format,
gint *length)
{
GimpToolInfo *tool_info;
gchar *name;
tool_info = (GimpToolInfo *)
(* (GimpDndDragViewableFunc) get_tool_func) (widget, get_tool_data);
if (! tool_info)
return NULL;
name = g_strdup (gimp_object_get_name (GIMP_OBJECT (tool_info)));
if (! name)
return NULL;
*format = 8;
*length = strlen (name) + 1;
return (guchar *) name;
}
static void static void
gimp_dnd_set_tool_data (GtkWidget *widget, gimp_dnd_set_tool_data (GtkWidget *widget,
GCallback set_tool_func, GCallback set_tool_func,
@ -1518,6 +1504,8 @@ gimp_dnd_set_tool_data (GtkWidget *widget,
name = (gchar *) vals; name = (gchar *) vals;
g_print ("gimp_dnd_set_tool_data() got >>%s<<\n", name);
if (strcmp (name, "gimp:standard_tool") == 0) if (strcmp (name, "gimp:standard_tool") == 0)
tool_info = gimp_tool_info_get_standard (the_gimp); tool_info = gimp_tool_info_get_standard (the_gimp);
else else

View File

@ -20,27 +20,30 @@
#define __GIMP_DND_H__ #define __GIMP_DND_H__
enum typedef enum
{ {
GIMP_DND_TYPE_URI_LIST, GIMP_DND_TYPE_NONE = 0,
GIMP_DND_TYPE_TEXT_PLAIN, GIMP_DND_TYPE_URI_LIST = 1,
GIMP_DND_TYPE_NETSCAPE_URL, GIMP_DND_TYPE_TEXT_PLAIN = 2,
GIMP_DND_TYPE_IMAGE, GIMP_DND_TYPE_NETSCAPE_URL = 3,
GIMP_DND_TYPE_LAYER, GIMP_DND_TYPE_COLOR = 4,
GIMP_DND_TYPE_CHANNEL, GIMP_DND_TYPE_IMAGE = 5,
GIMP_DND_TYPE_LAYER_MASK, GIMP_DND_TYPE_LAYER = 6,
GIMP_DND_TYPE_COMPONENT, GIMP_DND_TYPE_CHANNEL = 7,
GIMP_DND_TYPE_PATH, GIMP_DND_TYPE_LAYER_MASK = 8,
GIMP_DND_TYPE_COLOR, GIMP_DND_TYPE_COMPONENT = 9,
GIMP_DND_TYPE_BRUSH, GIMP_DND_TYPE_PATH = 10,
GIMP_DND_TYPE_PATTERN, GIMP_DND_TYPE_BRUSH = 11,
GIMP_DND_TYPE_GRADIENT, GIMP_DND_TYPE_PATTERN = 12,
GIMP_DND_TYPE_PALETTE, GIMP_DND_TYPE_GRADIENT = 13,
GIMP_DND_TYPE_BUFFER, GIMP_DND_TYPE_PALETTE = 14,
GIMP_DND_TYPE_TOOL, GIMP_DND_TYPE_BUFFER = 15,
GIMP_DND_TYPE_IMAGEFILE, GIMP_DND_TYPE_IMAGEFILE = 16,
GIMP_DND_TYPE_DIALOG GIMP_DND_TYPE_TOOL = 17,
}; GIMP_DND_TYPE_DIALOG = 18,
GIMP_DND_TYPE_LAST = GIMP_DND_TYPE_DIALOG
} GimpDndType;
#define GIMP_TARGET_URI_LIST \ #define GIMP_TARGET_URI_LIST \
@ -88,12 +91,12 @@ enum
#define GIMP_TARGET_BUFFER \ #define GIMP_TARGET_BUFFER \
{ "GIMP_BUFFER", 0, GIMP_DND_TYPE_BUFFER } { "GIMP_BUFFER", 0, GIMP_DND_TYPE_BUFFER }
#define GIMP_TARGET_TOOL \
{ "GIMP_TOOL", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_TOOL }
#define GIMP_TARGET_IMAGEFILE \ #define GIMP_TARGET_IMAGEFILE \
{ "GIMP_IMAGEFILE", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_TOOL } { "GIMP_IMAGEFILE", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_TOOL }
#define GIMP_TARGET_TOOL \
{ "GIMP_TOOL", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_TOOL }
#define GIMP_TARGET_DIALOG \ #define GIMP_TARGET_DIALOG \
{ "GIMP_DIALOG", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_DIALOG } { "GIMP_DIALOG", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_DIALOG }
@ -133,7 +136,7 @@ void gimp_dnd_color_dest_set (GtkWidget *widget,
void gimp_dnd_color_dest_unset (GtkWidget *widget); void gimp_dnd_color_dest_unset (GtkWidget *widget);
/* GimpViewable (by GtkType) dnd functions */ /* GimpViewable (by GType) dnd functions */
typedef void (* GimpDndDropViewableFunc) (GtkWidget *widget, typedef void (* GimpDndDropViewableFunc) (GtkWidget *widget,
GimpViewable *viewable, GimpViewable *viewable,
@ -141,27 +144,28 @@ typedef void (* GimpDndDropViewableFunc) (GtkWidget *widget,
typedef GimpViewable * (* GimpDndDragViewableFunc) (GtkWidget *widget, typedef GimpViewable * (* GimpDndDragViewableFunc) (GtkWidget *widget,
gpointer data); gpointer data);
void gimp_gtk_drag_source_set_by_type (GtkWidget *widget, void gimp_gtk_drag_source_set_by_type (GtkWidget *widget,
GdkModifierType start_button_mask, GdkModifierType start_button_mask,
GtkType type, GType type,
GdkDragAction actions); GdkDragAction actions);
void gimp_gtk_drag_dest_set_by_type (GtkWidget *widget, void gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
GtkDestDefaults flags, GtkDestDefaults flags,
GtkType type, GType type,
GdkDragAction actions); GdkDragAction actions);
void gimp_dnd_viewable_source_set (GtkWidget *widget, void gimp_dnd_viewable_source_set (GtkWidget *widget,
GtkType type, GType type,
GimpDndDragViewableFunc get_viewable_func, GimpDndDragViewableFunc get_viewable_func,
gpointer data); gpointer data);
void gimp_dnd_viewable_source_unset (GtkWidget *widget, void gimp_dnd_viewable_source_unset (GtkWidget *widget,
GtkType type); GType type);
void gimp_dnd_viewable_dest_set (GtkWidget *widget, void gimp_dnd_viewable_dest_set (GtkWidget *widget,
GtkType type, GType type,
GimpDndDropViewableFunc set_viewable_func, GimpDndDropViewableFunc set_viewable_func,
gpointer data); gpointer data);
void gimp_dnd_viewable_dest_unset (GtkWidget *widget, void gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GtkType type); GType type);
GimpViewable * gimp_dnd_get_drag_data (GtkWidget *widget); GimpViewable * gimp_dnd_get_drag_data (GtkWidget *widget);