app/gimpcontainergridview.[ch] app/gimpcontainerlistview.[ch] follow the

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

	* app/gimpcontainergridview.[ch]
	* app/gimpcontainerlistview.[ch]
	* app/gimpcontainerview.[ch]: follow the GimpPreview API change
	and take only "size" instead of "width" and "height" in the
	constructor.

	* app/gimpdnd.[ch]: first attempt to hack GtkType based DND which
	speaks in terms of GimpViewable instead of Brush, Pattern, ...
	Added functions to remove DND callbacks (used by the multi-views).

	* app/gimppreview.[ch]: new function gimp_preview_set_size_full().

	* app/commands.c: updated the example dialogs to be DND aware.

	* app/gimpimage.c: fixed preview size calculation by ensuring a
	minimal width/height of 1 pixel.
	Reported by Dave Neary <dneary@eircom.net>
This commit is contained in:
Michael Natterer 2001-02-09 21:49:47 +00:00 committed by Michael Natterer
parent 1823b4645b
commit 123ee5651e
39 changed files with 1561 additions and 662 deletions

View File

@ -1,3 +1,23 @@
2001-02-09 Michael Natterer <mitch@gimp.org>
* app/gimpcontainergridview.[ch]
* app/gimpcontainerlistview.[ch]
* app/gimpcontainerview.[ch]: follow the GimpPreview API change
and take only "size" instead of "width" and "height" in the
constructor.
* app/gimpdnd.[ch]: first attempt to hack GtkType based DND which
speaks in terms of GimpViewable instead of Brush, Pattern, ...
Added functions to remove DND callbacks (used by the multi-views).
* app/gimppreview.[ch]: new function gimp_preview_set_size_full().
* app/commands.c: updated the example dialogs to be DND aware.
* app/gimpimage.c: fixed preview size calculation by ensuring a
minimal width/height of 1 pixel.
Reported by Dave Neary <dneary@eircom.net>
2001-02-09 Michael Natterer <mitch@gimp.org>
* app/gimppreview.[ch]: moved the constructor-parameter-overkill

View File

@ -79,8 +79,10 @@
/* for the example dialogs */
#include "brushes.h"
#include "patterns.h"
#include "gimpcontainer.h"
#include "gimpcontainerlistview.h"
#include "gimpcontainergridview.h"
#include "gimpdnd.h"
#include "gimppreview.h"
@ -1320,33 +1322,77 @@ dialogs_module_browser_cmd_callback (GtkWidget *widget,
gtk_widget_show (module_browser);
}
/***** Container View Test Dialogs *****/
static void
container_view_scale_callback (GtkAdjustment *adj,
GimpContainerView *view)
{
gimp_container_view_set_preview_size (view,
ROUND (adj->value),
ROUND (adj->value));
gimp_container_view_set_preview_size (view, ROUND (adj->value));
}
static void
drop_viewable_callback (GtkWidget *widget,
GimpViewable *viewable,
gpointer data)
{
GimpContainerView *view;
view = GIMP_CONTAINER_VIEW (widget);
gimp_context_set_by_type (view->context,
view->container->children_type,
GIMP_OBJECT (viewable));
}
static void
brushes_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_brush_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
patterns_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_pattern_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
images_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, image_context);
}
@ -1364,9 +1410,7 @@ container_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gboolean multi)
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
@ -1377,107 +1421,168 @@ container_view_new (gboolean list,
{
view = gimp_container_list_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
if (! multi)
{
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
NULL);
NULL);
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
}
else
{
GtkWidget *preview;
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
}
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
if (multi)
adjustment = gtk_adjustment_new (preview_width, 16, 64, 4, 4, 0);
else
adjustment = gtk_adjustment_new (preview_width, 16, 257, 16, 16, 16);
adjustment = gtk_adjustment_new (preview_size, 16, 256, 16, 16, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
gtk_widget_show (scale);
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
GTK_SIGNAL_FUNC (container_view_scale_callback),
view);
gtk_widget_show (dialog);
}
static void
container_multi_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
GtkObject *adjustment;
GtkWidget *scale;
GtkWidget *preview;
if (list)
{
view = gimp_container_list_view_new (container,
context,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_size,
5, 5);
}
gimp_gtk_drag_dest_set_by_type (view,
GTK_DEST_DEFAULT_ALL,
container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
GIMP_CONTAINER_VIEW (view)->container->children_type,
drop_viewable_callback,
NULL);
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
/*
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_image (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (images_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
adjustment = gtk_adjustment_new (preview_size, 16, 64, 4, 4, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
@ -1497,8 +1602,7 @@ dialogs_test_image_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Image List",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1508,8 +1612,7 @@ dialogs_test_pattern_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Pattern List",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1519,8 +1622,7 @@ dialogs_test_brush_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Brush List",
global_brush_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1530,8 +1632,7 @@ dialogs_test_image_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Image Grid",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1541,8 +1642,7 @@ dialogs_test_pattern_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Pattern Grid",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1552,30 +1652,27 @@ dialogs_test_brush_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Brush Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
FALSE);
32);
}
void
dialogs_test_multi_container_list_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24, 24,
TRUE);
container_multi_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24);
}
void
dialogs_test_multi_container_grid_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
TRUE);
container_multi_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32);
}
/***** Help *****/

View File

@ -79,8 +79,10 @@
/* for the example dialogs */
#include "brushes.h"
#include "patterns.h"
#include "gimpcontainer.h"
#include "gimpcontainerlistview.h"
#include "gimpcontainergridview.h"
#include "gimpdnd.h"
#include "gimppreview.h"
@ -1320,33 +1322,77 @@ dialogs_module_browser_cmd_callback (GtkWidget *widget,
gtk_widget_show (module_browser);
}
/***** Container View Test Dialogs *****/
static void
container_view_scale_callback (GtkAdjustment *adj,
GimpContainerView *view)
{
gimp_container_view_set_preview_size (view,
ROUND (adj->value),
ROUND (adj->value));
gimp_container_view_set_preview_size (view, ROUND (adj->value));
}
static void
drop_viewable_callback (GtkWidget *widget,
GimpViewable *viewable,
gpointer data)
{
GimpContainerView *view;
view = GIMP_CONTAINER_VIEW (widget);
gimp_context_set_by_type (view->context,
view->container->children_type,
GIMP_OBJECT (viewable));
}
static void
brushes_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_brush_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
patterns_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_pattern_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
images_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, image_context);
}
@ -1364,9 +1410,7 @@ container_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gboolean multi)
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
@ -1377,107 +1421,168 @@ container_view_new (gboolean list,
{
view = gimp_container_list_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
if (! multi)
{
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
NULL);
NULL);
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
}
else
{
GtkWidget *preview;
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
}
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
if (multi)
adjustment = gtk_adjustment_new (preview_width, 16, 64, 4, 4, 0);
else
adjustment = gtk_adjustment_new (preview_width, 16, 257, 16, 16, 16);
adjustment = gtk_adjustment_new (preview_size, 16, 256, 16, 16, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
gtk_widget_show (scale);
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
GTK_SIGNAL_FUNC (container_view_scale_callback),
view);
gtk_widget_show (dialog);
}
static void
container_multi_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
GtkObject *adjustment;
GtkWidget *scale;
GtkWidget *preview;
if (list)
{
view = gimp_container_list_view_new (container,
context,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_size,
5, 5);
}
gimp_gtk_drag_dest_set_by_type (view,
GTK_DEST_DEFAULT_ALL,
container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
GIMP_CONTAINER_VIEW (view)->container->children_type,
drop_viewable_callback,
NULL);
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
/*
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_image (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (images_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
adjustment = gtk_adjustment_new (preview_size, 16, 64, 4, 4, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
@ -1497,8 +1602,7 @@ dialogs_test_image_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Image List",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1508,8 +1612,7 @@ dialogs_test_pattern_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Pattern List",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1519,8 +1622,7 @@ dialogs_test_brush_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Brush List",
global_brush_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1530,8 +1632,7 @@ dialogs_test_image_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Image Grid",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1541,8 +1642,7 @@ dialogs_test_pattern_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Pattern Grid",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1552,30 +1652,27 @@ dialogs_test_brush_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Brush Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
FALSE);
32);
}
void
dialogs_test_multi_container_list_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24, 24,
TRUE);
container_multi_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24);
}
void
dialogs_test_multi_container_grid_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
TRUE);
container_multi_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32);
}
/***** Help *****/

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -162,8 +162,7 @@ gimp_container_grid_view_destroy (GtkObject *object)
GtkWidget *
gimp_container_grid_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y)
{
@ -174,8 +173,7 @@ gimp_container_grid_view_new (GimpContainer *container,
g_return_val_if_fail (container != NULL, NULL);
g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL);
g_return_val_if_fail (! context || GIMP_IS_CONTEXT (context), NULL);
g_return_val_if_fail (preview_width > 0 && preview_width <= 64, NULL);
g_return_val_if_fail (preview_height > 0 && preview_height <= 64, NULL);
g_return_val_if_fail (preview_size > 0 && preview_size <= 64, NULL);
g_return_val_if_fail (min_items_x > 0 && min_items_x <= 64, NULL);
g_return_val_if_fail (min_items_y > 0 && min_items_y <= 64, NULL);
@ -183,8 +181,7 @@ gimp_container_grid_view_new (GimpContainer *container,
view = GIMP_CONTAINER_VIEW (grid_view);
view->preview_width = preview_width;
view->preview_height = preview_height;
view->preview_size = preview_size;
window_border =
GTK_SCROLLED_WINDOW (grid_view->scrolled_win)->vscrollbar->requisition.width +
@ -192,8 +189,8 @@ gimp_container_grid_view_new (GimpContainer *container,
grid_view->scrolled_win->style->klass->xthickness * 4;
gtk_widget_set_usize (grid_view->scrolled_win,
(preview_width + 2) * min_items_x + window_border,
(preview_height + 2) * min_items_y + window_border);
(preview_size + 2) * min_items_x + window_border,
(preview_size + 2) * min_items_y + window_border);
gimp_container_view_set_container (view, container);
@ -213,8 +210,8 @@ gimp_container_grid_view_insert_item (GimpContainerView *view,
grid_view = GIMP_CONTAINER_GRID_VIEW (view);
preview = gimp_preview_new_full (viewable,
view->preview_width,
view->preview_height,
view->preview_size,
view->preview_size,
1,
FALSE, TRUE, TRUE);
@ -302,9 +299,7 @@ gimp_container_grid_view_set_preview_size (GimpContainerView *view)
preview = GIMP_PREVIEW (child->widget);
gimp_preview_set_size (preview,
view->preview_width,
view->preview_height);
gimp_preview_set_size (preview, view->preview_size);
}
gtk_widget_queue_resize (grid_view->wrap_box);

View File

@ -51,8 +51,7 @@ struct _GimpContainerGridViewClass
GtkType gimp_container_grid_view_get_type (void);
GtkWidget * gimp_container_grid_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y);

View File

@ -155,8 +155,7 @@ gimp_container_list_view_destroy (GtkObject *object)
GtkWidget *
gimp_container_list_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y)
{
@ -167,8 +166,7 @@ gimp_container_list_view_new (GimpContainer *container,
g_return_val_if_fail (container != NULL, NULL);
g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL);
g_return_val_if_fail (! context || GIMP_IS_CONTEXT (context), NULL);
g_return_val_if_fail (preview_width > 0 && preview_width <= 64, NULL);
g_return_val_if_fail (preview_height > 0 && preview_height <= 64, NULL);
g_return_val_if_fail (preview_size > 0 && preview_size <= 64, NULL);
g_return_val_if_fail (min_items_x > 0 && min_items_x <= 64, NULL);
g_return_val_if_fail (min_items_y > 0 && min_items_y <= 64, NULL);
@ -176,8 +174,7 @@ gimp_container_list_view_new (GimpContainer *container,
view = GIMP_CONTAINER_VIEW (list_view);
view->preview_width = preview_width;
view->preview_height = preview_height;
view->preview_size = preview_size;
window_border =
GTK_SCROLLED_WINDOW (list_view->scrolled_win)->vscrollbar->requisition.width +
@ -185,8 +182,8 @@ gimp_container_list_view_new (GimpContainer *container,
list_view->scrolled_win->style->klass->xthickness * 4;
gtk_widget_set_usize (list_view->gtk_list->parent,
(preview_width + 2) * min_items_x + window_border,
(preview_height + 2) * min_items_y + window_border);
(preview_size + 2) * min_items_x + window_border,
(preview_size + 2) * min_items_y + window_border);
gimp_container_view_set_container (view, container);
@ -222,11 +219,7 @@ gimp_container_list_view_insert_item (GimpContainerView *view,
gtk_container_add (GTK_CONTAINER (list_item), hbox);
gtk_widget_show (hbox);
preview = gimp_preview_new_full (viewable,
view->preview_width,
view->preview_height,
1,
FALSE, FALSE, FALSE);
preview = gimp_preview_new (viewable, view->preview_size, 1);
gtk_box_pack_start (GTK_BOX (hbox), preview, FALSE, FALSE, 0);
gtk_widget_show (preview);
@ -355,9 +348,7 @@ gimp_container_list_view_set_preview_size (GimpContainerView *view)
preview = gtk_object_get_data (GTK_OBJECT (list->data), "preview");
gimp_preview_set_size (preview,
view->preview_width,
view->preview_height);
gimp_preview_set_size (preview, view->preview_size);
}
gtk_widget_queue_resize (list_view->gtk_list);

View File

@ -49,8 +49,7 @@ struct _GimpContainerListViewClass
GtkType gimp_container_list_view_get_type (void);
GtkWidget * gimp_container_list_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y);

View File

@ -170,8 +170,7 @@ gimp_container_view_init (GimpContainerView *view)
view->hash_table = g_hash_table_new (g_direct_hash, g_direct_equal);
view->preview_width = 0;
view->preview_height = 0;
view->preview_size = 0;
}
static void
@ -307,16 +306,13 @@ gimp_container_view_set_context (GimpContainerView *view,
void
gimp_container_view_set_preview_size (GimpContainerView *view,
gint width,
gint height)
gint preview_size)
{
g_return_if_fail (view != NULL);
g_return_if_fail (GIMP_IS_CONTAINER_VIEW (view));
g_return_if_fail (width > 0 && width <= 256 /* FIXME: 64 */);
g_return_if_fail (height > 0 && height <= 256 /* FIXME: 64 */);
g_return_if_fail (preview_size > 0 && preview_size <= 256 /* FIXME: 64 */);
view->preview_width = width;
view->preview_height = height;
view->preview_size = preview_size;
gtk_signal_emit (GTK_OBJECT (view), view_signals[SET_PREVIEW_SIZE]);
}

View File

@ -42,8 +42,7 @@ struct _GimpContainerView
GHashTable *hash_table;
gint preview_width;
gint preview_height;
gint preview_size;
};
struct _GimpContainerViewClass
@ -71,8 +70,7 @@ void gimp_container_view_set_container (GimpContainerView *view,
void gimp_container_view_set_context (GimpContainerView *view,
GimpContext *context);
void gimp_container_view_set_preview_size (GimpContainerView *view,
gint width,
gint height);
gint preview_size);
void gimp_container_view_select_item (GimpContainerView *view,
GimpViewable *viewable);

View File

@ -488,6 +488,27 @@ gimp_dnd_data_dest_set (GimpDndDataType data_type,
set_data_data);
}
static void
gimp_dnd_data_dest_unset (GimpDndDataType data_type,
GtkWidget *widget)
{
gboolean drop_connected;
drop_connected =
(gboolean) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_dnd_drop_connected");
if (! drop_connected)
return;
gtk_object_set_data (GTK_OBJECT (widget),
dnd_data_defs[data_type].set_data_func_name,
NULL);
gtk_object_set_data (GTK_OBJECT (widget),
dnd_data_defs[data_type].set_data_data_name,
NULL);
}
/*************************/
/* color dnd functions */
/*************************/
@ -587,6 +608,105 @@ gimp_dnd_color_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_color_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_COLOR, widget);
}
/*********************************************/
/* GimpViewable (by GtkType) dnd functions */
/*********************************************/
void
gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
GtkDestDefaults flags,
GtkType type,
GdkDragAction actions)
{
const GtkTargetEntry *target_table = NULL;
guint n_targets = 0;
static const GtkTargetEntry brush_target_table[] =
{
GIMP_TARGET_BRUSH
};
static const guint brush_n_targets = (sizeof (brush_target_table) /
sizeof (brush_target_table[0]));
static const GtkTargetEntry pattern_target_table[] =
{
GIMP_TARGET_PATTERN
};
static const guint pattern_n_targets = (sizeof (pattern_target_table) /
sizeof (pattern_target_table[0]));
if (type == GIMP_TYPE_BRUSH)
{
target_table = brush_target_table;
n_targets = brush_n_targets;
}
else if (type == GIMP_TYPE_PATTERN)
{
target_table = pattern_target_table;
n_targets = pattern_n_targets;
}
else
{
g_warning ("%s(): unsupported GtkType", G_GNUC_FUNCTION);
}
if (target_table && n_targets)
{
gtk_drag_dest_set (widget, flags,
target_table,
n_targets,
actions);
}
}
void
gimp_dnd_viewable_dest_set (GtkWidget *widget,
GtkType type,
GimpDndDropViewableFunc set_viewable_func,
gpointer data)
{
if (type == GIMP_TYPE_BRUSH)
{
gimp_dnd_brush_dest_set (widget,
(GimpDndDropBrushFunc) set_viewable_func,
data);
}
else if (type == GIMP_TYPE_PATTERN)
{
gimp_dnd_pattern_dest_set (widget,
(GimpDndDropPatternFunc) set_viewable_func,
data);
}
else
{
g_warning ("%s(): unsupported GtkType", G_GNUC_FUNCTION);
}
}
void
gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GtkType type)
{
if (type == GIMP_TYPE_BRUSH)
{
gimp_dnd_brush_dest_unset (widget);
}
else if (type == GIMP_TYPE_PATTERN)
{
gimp_dnd_pattern_dest_unset (widget);
}
else
{
g_warning ("%s(): unsupported GtkType", G_GNUC_FUNCTION);
}
}
/*************************/
/* brush dnd functions */
/*************************/
@ -684,6 +804,12 @@ gimp_dnd_brush_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_brush_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_BRUSH, widget);
}
/***************************/
/* pattern dnd functions */
/***************************/
@ -781,6 +907,12 @@ gimp_dnd_pattern_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_pattern_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_PATTERN, widget);
}
/****************************/
/* gradient dnd functions */
/****************************/
@ -882,6 +1014,12 @@ gimp_dnd_gradient_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_gradient_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_GRADIENT, widget);
}
/***************************/
/* palette dnd functions */
/***************************/
@ -934,6 +1072,12 @@ gimp_dnd_palette_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_palette_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_PALETTE, widget);
}
/************************/
/* tool dnd functions */
/************************/
@ -1029,6 +1173,12 @@ gimp_dnd_tool_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_tool_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_TOOL, widget);
}
/****************************/
/* drawable dnd functions */
/****************************/
@ -1265,4 +1415,3 @@ gimp_dnd_file_dest_set (GtkWidget *widget)
GTK_SIGNAL_FUNC (gimp_dnd_file_drag_data_received),
widget);
}

View File

@ -39,6 +39,14 @@ enum
GIMP_DND_TYPE_TOOL
};
typedef enum
{
GIMP_DROP_NONE,
GIMP_DROP_ABOVE,
GIMP_DROP_BELOW
} GimpDropType;
#define GIMP_TARGET_URI_LIST \
{ "text/uri-list", 0, GIMP_DND_TYPE_URI_LIST }
@ -84,12 +92,6 @@ enum
#define GIMP_TARGET_TOOL \
{ "GIMP_TOOL", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_TOOL }
typedef enum
{
GIMP_DROP_NONE,
GIMP_DROP_ABOVE,
GIMP_DROP_BELOW
} GimpDropType;
/* color dnd functions */
@ -106,6 +108,26 @@ void gimp_dnd_color_source_set (GtkWidget *widget,
void gimp_dnd_color_dest_set (GtkWidget *widget,
GimpDndDropColorFunc set_color_func,
gpointer data);
void gimp_dnd_color_dest_unset (GtkWidget *widget);
/* GimpViewable (by GtkType) dnd functions */
typedef void (* GimpDndDropViewableFunc) (GtkWidget *widget,
GimpViewable *viewable,
gpointer data);
void gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
GtkDestDefaults flags,
GtkType type,
GdkDragAction actions);
void gimp_dnd_viewable_dest_set (GtkWidget *widget,
GtkType type,
GimpDndDropViewableFunc set_viewable_func,
gpointer data);
void gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GtkType type);
/* brush dnd functions */
@ -121,6 +143,8 @@ void gimp_dnd_brush_source_set (GtkWidget *widget,
void gimp_dnd_brush_dest_set (GtkWidget *widget,
GimpDndDropBrushFunc set_brush_func,
gpointer data);
void gimp_dnd_brush_dest_unset (GtkWidget *widget);
/* pattern dnd functions */
@ -136,6 +160,8 @@ void gimp_dnd_pattern_source_set (GtkWidget *widget,
void gimp_dnd_pattern_dest_set (GtkWidget *widget,
GimpDndDropPatternFunc set_pattern_func,
gpointer data);
void gimp_dnd_pattern_dest_unset (GtkWidget *widget);
/* gradient dnd functions */
@ -151,6 +177,8 @@ void gimp_dnd_gradient_source_set (GtkWidget *widget,
void gimp_dnd_gradient_dest_set (GtkWidget *widget,
GimpDndDropGradientFunc set_gradient_func,
gpointer data);
void gimp_dnd_gradient_dest_unset (GtkWidget *widget);
/* palette dnd functions */
@ -166,6 +194,8 @@ void gimp_dnd_palette_source_set (GtkWidget *widget,
void gimp_dnd_palette_dest_set (GtkWidget *widget,
GimpDndDropPaletteFunc set_palette_func,
gpointer data);
void gimp_dnd_palette_dest_unset (GtkWidget *widget);
/* tool dnd functions */
@ -181,6 +211,8 @@ void gimp_dnd_tool_source_set (GtkWidget *widget,
void gimp_dnd_tool_dest_set (GtkWidget *widget,
GimpDndDropToolFunc set_tool_func,
gpointer data);
void gimp_dnd_tool_dest_unset (GtkWidget *widget);
/* drawable dnd functions */
@ -188,8 +220,10 @@ void gimp_dnd_set_drawable_preview_icon (GtkWidget *widget,
GdkDragContext *context,
GimpDrawable *drawable);
/* file / url dnd functions */
void gimp_dnd_file_dest_set (GtkWidget *widget);
#endif /* __GIMP_DND_H__ */

View File

@ -4050,6 +4050,9 @@ gimp_image_get_new_preview (GimpViewable *viewable,
y = (gint) RINT (ratio * off_y);
w = (gint) RINT (ratio * gimp_drawable_width (GIMP_DRAWABLE (layer)));
h = (gint) RINT (ratio * gimp_drawable_height (GIMP_DRAWABLE (layer)));
w = MAX (1, width);
h = MAX (1, height);
x1 = CLAMP (x, 0, width);
y1 = CLAMP (y, 0, height);

View File

@ -309,6 +309,41 @@ gimp_preview_new_full (GimpViewable *viewable,
return GTK_WIDGET (preview);
}
void
gimp_preview_set_size (GimpPreview *preview,
gint preview_size)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (preview_size > 0 && preview_size <= 256);
gimp_preview_set_size_full (preview,
preview_size,
preview_size,
preview->border_width);
}
void
gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
g_return_if_fail (border_width >= 0 && border_width <= 16);
preview->width = width;
preview->height = height;
preview->border_width = border_width;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
void
gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable)
@ -354,24 +389,6 @@ gimp_preview_set_context (GimpPreview *preview,
g_return_if_fail (! context || GIMP_IS_CONTEXT (context));
}
void
gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
preview->width = width;
preview->height = height;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
static gint
gimp_preview_button_press_event (GtkWidget *widget,
GdkEventButton *bevent)
@ -397,6 +414,10 @@ gimp_preview_button_press_event (GtkWidget *widget,
bevent->y);
}
}
else
{
return FALSE;
}
}
return TRUE;
@ -432,6 +453,10 @@ gimp_preview_button_release_event (GtkWidget *widget,
gtk_signal_emit (GTK_OBJECT (widget), preview_signals[CLICKED]);
}
}
else
{
return FALSE;
}
return TRUE;
}

View File

@ -78,10 +78,10 @@ struct _GimpPreviewClass
GtkType gimp_preview_get_type (void);
GtkWidget * gimp_preview_new (GimpViewable *viewable,
gint size,
gint border_width);
GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gint width,
gint height,
@ -90,13 +90,17 @@ GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gboolean clickable,
gboolean show_popup);
void gimp_preview_set_size (GimpPreview *preview,
gint size);
void gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width);
void gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable);
void gimp_preview_set_context (GimpPreview *preview,
GimpContext *context);
void gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height);
/* private */

View File

@ -79,8 +79,10 @@
/* for the example dialogs */
#include "brushes.h"
#include "patterns.h"
#include "gimpcontainer.h"
#include "gimpcontainerlistview.h"
#include "gimpcontainergridview.h"
#include "gimpdnd.h"
#include "gimppreview.h"
@ -1320,33 +1322,77 @@ dialogs_module_browser_cmd_callback (GtkWidget *widget,
gtk_widget_show (module_browser);
}
/***** Container View Test Dialogs *****/
static void
container_view_scale_callback (GtkAdjustment *adj,
GimpContainerView *view)
{
gimp_container_view_set_preview_size (view,
ROUND (adj->value),
ROUND (adj->value));
gimp_container_view_set_preview_size (view, ROUND (adj->value));
}
static void
drop_viewable_callback (GtkWidget *widget,
GimpViewable *viewable,
gpointer data)
{
GimpContainerView *view;
view = GIMP_CONTAINER_VIEW (widget);
gimp_context_set_by_type (view->context,
view->container->children_type,
GIMP_OBJECT (viewable));
}
static void
brushes_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_brush_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
patterns_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_pattern_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
images_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, image_context);
}
@ -1364,9 +1410,7 @@ container_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gboolean multi)
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
@ -1377,107 +1421,168 @@ container_view_new (gboolean list,
{
view = gimp_container_list_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
if (! multi)
{
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
NULL);
NULL);
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
}
else
{
GtkWidget *preview;
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
}
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
if (multi)
adjustment = gtk_adjustment_new (preview_width, 16, 64, 4, 4, 0);
else
adjustment = gtk_adjustment_new (preview_width, 16, 257, 16, 16, 16);
adjustment = gtk_adjustment_new (preview_size, 16, 256, 16, 16, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
gtk_widget_show (scale);
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
GTK_SIGNAL_FUNC (container_view_scale_callback),
view);
gtk_widget_show (dialog);
}
static void
container_multi_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
GtkObject *adjustment;
GtkWidget *scale;
GtkWidget *preview;
if (list)
{
view = gimp_container_list_view_new (container,
context,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_size,
5, 5);
}
gimp_gtk_drag_dest_set_by_type (view,
GTK_DEST_DEFAULT_ALL,
container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
GIMP_CONTAINER_VIEW (view)->container->children_type,
drop_viewable_callback,
NULL);
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
/*
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_image (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (images_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
adjustment = gtk_adjustment_new (preview_size, 16, 64, 4, 4, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
@ -1497,8 +1602,7 @@ dialogs_test_image_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Image List",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1508,8 +1612,7 @@ dialogs_test_pattern_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Pattern List",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1519,8 +1622,7 @@ dialogs_test_brush_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Brush List",
global_brush_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1530,8 +1632,7 @@ dialogs_test_image_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Image Grid",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1541,8 +1642,7 @@ dialogs_test_pattern_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Pattern Grid",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1552,30 +1652,27 @@ dialogs_test_brush_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Brush Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
FALSE);
32);
}
void
dialogs_test_multi_container_list_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24, 24,
TRUE);
container_multi_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24);
}
void
dialogs_test_multi_container_grid_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
TRUE);
container_multi_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32);
}
/***** Help *****/

View File

@ -79,8 +79,10 @@
/* for the example dialogs */
#include "brushes.h"
#include "patterns.h"
#include "gimpcontainer.h"
#include "gimpcontainerlistview.h"
#include "gimpcontainergridview.h"
#include "gimpdnd.h"
#include "gimppreview.h"
@ -1320,33 +1322,77 @@ dialogs_module_browser_cmd_callback (GtkWidget *widget,
gtk_widget_show (module_browser);
}
/***** Container View Test Dialogs *****/
static void
container_view_scale_callback (GtkAdjustment *adj,
GimpContainerView *view)
{
gimp_container_view_set_preview_size (view,
ROUND (adj->value),
ROUND (adj->value));
gimp_container_view_set_preview_size (view, ROUND (adj->value));
}
static void
drop_viewable_callback (GtkWidget *widget,
GimpViewable *viewable,
gpointer data)
{
GimpContainerView *view;
view = GIMP_CONTAINER_VIEW (widget);
gimp_context_set_by_type (view->context,
view->container->children_type,
GIMP_OBJECT (viewable));
}
static void
brushes_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_brush_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
patterns_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, global_pattern_list);
gimp_gtk_drag_dest_set_by_type (GTK_WIDGET (view),
GTK_DEST_DEFAULT_ALL,
view->container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
view->container->children_type,
drop_viewable_callback,
NULL);
}
static void
images_callback (GtkWidget *widget,
GimpContainerView *view)
{
gtk_drag_dest_unset (GTK_WIDGET (view));
gimp_dnd_viewable_dest_unset (GTK_WIDGET (view),
view->container->children_type);
gimp_container_view_set_container (view, image_context);
}
@ -1364,9 +1410,7 @@ container_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gboolean multi)
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
@ -1377,107 +1421,168 @@ container_view_new (gboolean list,
{
view = gimp_container_list_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_width,
preview_height,
preview_size,
5, 5);
}
if (! multi)
{
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, TRUE, TRUE,
NULL);
NULL);
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
}
else
{
GtkWidget *preview;
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
}
gtk_widget_hide (GTK_DIALOG (dialog)->action_area);
/*
gtk_widget_hide (GTK_WIDGET (g_list_nth_data (gtk_container_children (GTK_CONTAINER (GTK_BIN (dialog)->child)), 1)));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
if (multi)
adjustment = gtk_adjustment_new (preview_width, 16, 64, 4, 4, 0);
else
adjustment = gtk_adjustment_new (preview_width, 16, 257, 16, 16, 16);
adjustment = gtk_adjustment_new (preview_size, 16, 256, 16, 16, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
gtk_widget_show (scale);
gtk_signal_connect (GTK_OBJECT (adjustment), "value_changed",
GTK_SIGNAL_FUNC (container_view_scale_callback),
view);
gtk_widget_show (dialog);
}
static void
container_multi_view_new (gboolean list,
gchar *title,
GimpContainer *container,
GimpContext *context,
gint preview_size)
{
GtkWidget *dialog;
GtkWidget *view;
GtkObject *adjustment;
GtkWidget *scale;
GtkWidget *preview;
if (list)
{
view = gimp_container_list_view_new (container,
context,
preview_size,
5, 5);
}
else
{
view = gimp_container_grid_view_new (container,
context,
preview_size,
5, 5);
}
gimp_gtk_drag_dest_set_by_type (view,
GTK_DEST_DEFAULT_ALL,
container->children_type,
GDK_ACTION_COPY);
gimp_dnd_viewable_dest_set (GTK_WIDGET (view),
GIMP_CONTAINER_VIEW (view)->container->children_type,
drop_viewable_callback,
NULL);
dialog = gimp_dialog_new (title, "test",
gimp_standard_help_func,
NULL,
GTK_WIN_POS_MOUSE,
FALSE, TRUE, TRUE,
"Images", images_callback,
view, NULL, NULL, FALSE, FALSE,
/*
"NULL", null_callback,
view, NULL, NULL, FALSE, FALSE,
*/
"_delete_event_", gtk_widget_destroy,
NULL, 1, NULL, FALSE, TRUE,
NULL);
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_brush (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (brushes_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"brush_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_pattern (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (patterns_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
/*
preview =
gimp_preview_new_full (GIMP_VIEWABLE (gimp_context_get_image (context)),
32, 32, 1,
FALSE, TRUE, FALSE);
gimp_preview_set_context (GIMP_PREVIEW (preview), context);
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->action_area), preview,
FALSE, FALSE, 0);
gtk_widget_show (preview);
gtk_signal_connect (GTK_OBJECT (preview), "clicked",
GTK_SIGNAL_FUNC (images_callback),
view);
gtk_signal_connect_object_while_alive
(GTK_OBJECT (context),
"pattern_changed",
GTK_SIGNAL_FUNC (gimp_preview_set_viewable),
GTK_OBJECT (preview));
*/
gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), view);
gtk_widget_show (view);
adjustment = gtk_adjustment_new (preview_size, 16, 64, 4, 4, 0);
scale = gtk_hscale_new (GTK_ADJUSTMENT (adjustment));
gtk_box_pack_start (GTK_BOX (GTK_DIALOG (dialog)->vbox), scale,
FALSE, FALSE, 0);
@ -1497,8 +1602,7 @@ dialogs_test_image_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Image List",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1508,8 +1612,7 @@ dialogs_test_pattern_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Pattern List",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1519,8 +1622,7 @@ dialogs_test_brush_container_list_view_cmd_callback (GtkWidget *widget,
container_view_new (TRUE, "Brush List",
global_brush_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1530,8 +1632,7 @@ dialogs_test_image_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Image Grid",
image_context,
gimp_context_get_user (),
64, 64,
FALSE);
64);
}
void
@ -1541,8 +1642,7 @@ dialogs_test_pattern_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Pattern Grid",
global_pattern_list,
gimp_context_get_user (),
24, 24,
FALSE);
24);
}
void
@ -1552,30 +1652,27 @@ dialogs_test_brush_container_grid_view_cmd_callback (GtkWidget *widget,
container_view_new (FALSE, "Brush Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
FALSE);
32);
}
void
dialogs_test_multi_container_list_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24, 24,
TRUE);
container_multi_view_new (TRUE, "Multi List",
global_brush_list,
gimp_context_get_user (),
24);
}
void
dialogs_test_multi_container_grid_view_cmd_callback (GtkWidget *widget,
gpointer client_data)
{
container_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32, 32,
TRUE);
container_multi_view_new (FALSE, "Multi Grid",
global_brush_list,
gimp_context_get_user (),
32);
}
/***** Help *****/

View File

@ -162,8 +162,7 @@ gimp_container_grid_view_destroy (GtkObject *object)
GtkWidget *
gimp_container_grid_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y)
{
@ -174,8 +173,7 @@ gimp_container_grid_view_new (GimpContainer *container,
g_return_val_if_fail (container != NULL, NULL);
g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL);
g_return_val_if_fail (! context || GIMP_IS_CONTEXT (context), NULL);
g_return_val_if_fail (preview_width > 0 && preview_width <= 64, NULL);
g_return_val_if_fail (preview_height > 0 && preview_height <= 64, NULL);
g_return_val_if_fail (preview_size > 0 && preview_size <= 64, NULL);
g_return_val_if_fail (min_items_x > 0 && min_items_x <= 64, NULL);
g_return_val_if_fail (min_items_y > 0 && min_items_y <= 64, NULL);
@ -183,8 +181,7 @@ gimp_container_grid_view_new (GimpContainer *container,
view = GIMP_CONTAINER_VIEW (grid_view);
view->preview_width = preview_width;
view->preview_height = preview_height;
view->preview_size = preview_size;
window_border =
GTK_SCROLLED_WINDOW (grid_view->scrolled_win)->vscrollbar->requisition.width +
@ -192,8 +189,8 @@ gimp_container_grid_view_new (GimpContainer *container,
grid_view->scrolled_win->style->klass->xthickness * 4;
gtk_widget_set_usize (grid_view->scrolled_win,
(preview_width + 2) * min_items_x + window_border,
(preview_height + 2) * min_items_y + window_border);
(preview_size + 2) * min_items_x + window_border,
(preview_size + 2) * min_items_y + window_border);
gimp_container_view_set_container (view, container);
@ -213,8 +210,8 @@ gimp_container_grid_view_insert_item (GimpContainerView *view,
grid_view = GIMP_CONTAINER_GRID_VIEW (view);
preview = gimp_preview_new_full (viewable,
view->preview_width,
view->preview_height,
view->preview_size,
view->preview_size,
1,
FALSE, TRUE, TRUE);
@ -302,9 +299,7 @@ gimp_container_grid_view_set_preview_size (GimpContainerView *view)
preview = GIMP_PREVIEW (child->widget);
gimp_preview_set_size (preview,
view->preview_width,
view->preview_height);
gimp_preview_set_size (preview, view->preview_size);
}
gtk_widget_queue_resize (grid_view->wrap_box);

View File

@ -51,8 +51,7 @@ struct _GimpContainerGridViewClass
GtkType gimp_container_grid_view_get_type (void);
GtkWidget * gimp_container_grid_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y);

View File

@ -155,8 +155,7 @@ gimp_container_list_view_destroy (GtkObject *object)
GtkWidget *
gimp_container_list_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y)
{
@ -167,8 +166,7 @@ gimp_container_list_view_new (GimpContainer *container,
g_return_val_if_fail (container != NULL, NULL);
g_return_val_if_fail (GIMP_IS_CONTAINER (container), NULL);
g_return_val_if_fail (! context || GIMP_IS_CONTEXT (context), NULL);
g_return_val_if_fail (preview_width > 0 && preview_width <= 64, NULL);
g_return_val_if_fail (preview_height > 0 && preview_height <= 64, NULL);
g_return_val_if_fail (preview_size > 0 && preview_size <= 64, NULL);
g_return_val_if_fail (min_items_x > 0 && min_items_x <= 64, NULL);
g_return_val_if_fail (min_items_y > 0 && min_items_y <= 64, NULL);
@ -176,8 +174,7 @@ gimp_container_list_view_new (GimpContainer *container,
view = GIMP_CONTAINER_VIEW (list_view);
view->preview_width = preview_width;
view->preview_height = preview_height;
view->preview_size = preview_size;
window_border =
GTK_SCROLLED_WINDOW (list_view->scrolled_win)->vscrollbar->requisition.width +
@ -185,8 +182,8 @@ gimp_container_list_view_new (GimpContainer *container,
list_view->scrolled_win->style->klass->xthickness * 4;
gtk_widget_set_usize (list_view->gtk_list->parent,
(preview_width + 2) * min_items_x + window_border,
(preview_height + 2) * min_items_y + window_border);
(preview_size + 2) * min_items_x + window_border,
(preview_size + 2) * min_items_y + window_border);
gimp_container_view_set_container (view, container);
@ -222,11 +219,7 @@ gimp_container_list_view_insert_item (GimpContainerView *view,
gtk_container_add (GTK_CONTAINER (list_item), hbox);
gtk_widget_show (hbox);
preview = gimp_preview_new_full (viewable,
view->preview_width,
view->preview_height,
1,
FALSE, FALSE, FALSE);
preview = gimp_preview_new (viewable, view->preview_size, 1);
gtk_box_pack_start (GTK_BOX (hbox), preview, FALSE, FALSE, 0);
gtk_widget_show (preview);
@ -355,9 +348,7 @@ gimp_container_list_view_set_preview_size (GimpContainerView *view)
preview = gtk_object_get_data (GTK_OBJECT (list->data), "preview");
gimp_preview_set_size (preview,
view->preview_width,
view->preview_height);
gimp_preview_set_size (preview, view->preview_size);
}
gtk_widget_queue_resize (list_view->gtk_list);

View File

@ -49,8 +49,7 @@ struct _GimpContainerListViewClass
GtkType gimp_container_list_view_get_type (void);
GtkWidget * gimp_container_list_view_new (GimpContainer *container,
GimpContext *context,
gint preview_width,
gint preview_height,
gint preview_size,
gint min_items_x,
gint min_items_y);

View File

@ -170,8 +170,7 @@ gimp_container_view_init (GimpContainerView *view)
view->hash_table = g_hash_table_new (g_direct_hash, g_direct_equal);
view->preview_width = 0;
view->preview_height = 0;
view->preview_size = 0;
}
static void
@ -307,16 +306,13 @@ gimp_container_view_set_context (GimpContainerView *view,
void
gimp_container_view_set_preview_size (GimpContainerView *view,
gint width,
gint height)
gint preview_size)
{
g_return_if_fail (view != NULL);
g_return_if_fail (GIMP_IS_CONTAINER_VIEW (view));
g_return_if_fail (width > 0 && width <= 256 /* FIXME: 64 */);
g_return_if_fail (height > 0 && height <= 256 /* FIXME: 64 */);
g_return_if_fail (preview_size > 0 && preview_size <= 256 /* FIXME: 64 */);
view->preview_width = width;
view->preview_height = height;
view->preview_size = preview_size;
gtk_signal_emit (GTK_OBJECT (view), view_signals[SET_PREVIEW_SIZE]);
}

View File

@ -42,8 +42,7 @@ struct _GimpContainerView
GHashTable *hash_table;
gint preview_width;
gint preview_height;
gint preview_size;
};
struct _GimpContainerViewClass
@ -71,8 +70,7 @@ void gimp_container_view_set_container (GimpContainerView *view,
void gimp_container_view_set_context (GimpContainerView *view,
GimpContext *context);
void gimp_container_view_set_preview_size (GimpContainerView *view,
gint width,
gint height);
gint preview_size);
void gimp_container_view_select_item (GimpContainerView *view,
GimpViewable *viewable);

View File

@ -488,6 +488,27 @@ gimp_dnd_data_dest_set (GimpDndDataType data_type,
set_data_data);
}
static void
gimp_dnd_data_dest_unset (GimpDndDataType data_type,
GtkWidget *widget)
{
gboolean drop_connected;
drop_connected =
(gboolean) gtk_object_get_data (GTK_OBJECT (widget),
"gimp_dnd_drop_connected");
if (! drop_connected)
return;
gtk_object_set_data (GTK_OBJECT (widget),
dnd_data_defs[data_type].set_data_func_name,
NULL);
gtk_object_set_data (GTK_OBJECT (widget),
dnd_data_defs[data_type].set_data_data_name,
NULL);
}
/*************************/
/* color dnd functions */
/*************************/
@ -587,6 +608,105 @@ gimp_dnd_color_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_color_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_COLOR, widget);
}
/*********************************************/
/* GimpViewable (by GtkType) dnd functions */
/*********************************************/
void
gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
GtkDestDefaults flags,
GtkType type,
GdkDragAction actions)
{
const GtkTargetEntry *target_table = NULL;
guint n_targets = 0;
static const GtkTargetEntry brush_target_table[] =
{
GIMP_TARGET_BRUSH
};
static const guint brush_n_targets = (sizeof (brush_target_table) /
sizeof (brush_target_table[0]));
static const GtkTargetEntry pattern_target_table[] =
{
GIMP_TARGET_PATTERN
};
static const guint pattern_n_targets = (sizeof (pattern_target_table) /
sizeof (pattern_target_table[0]));
if (type == GIMP_TYPE_BRUSH)
{
target_table = brush_target_table;
n_targets = brush_n_targets;
}
else if (type == GIMP_TYPE_PATTERN)
{
target_table = pattern_target_table;
n_targets = pattern_n_targets;
}
else
{
g_warning ("%s(): unsupported GtkType", G_GNUC_FUNCTION);
}
if (target_table && n_targets)
{
gtk_drag_dest_set (widget, flags,
target_table,
n_targets,
actions);
}
}
void
gimp_dnd_viewable_dest_set (GtkWidget *widget,
GtkType type,
GimpDndDropViewableFunc set_viewable_func,
gpointer data)
{
if (type == GIMP_TYPE_BRUSH)
{
gimp_dnd_brush_dest_set (widget,
(GimpDndDropBrushFunc) set_viewable_func,
data);
}
else if (type == GIMP_TYPE_PATTERN)
{
gimp_dnd_pattern_dest_set (widget,
(GimpDndDropPatternFunc) set_viewable_func,
data);
}
else
{
g_warning ("%s(): unsupported GtkType", G_GNUC_FUNCTION);
}
}
void
gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GtkType type)
{
if (type == GIMP_TYPE_BRUSH)
{
gimp_dnd_brush_dest_unset (widget);
}
else if (type == GIMP_TYPE_PATTERN)
{
gimp_dnd_pattern_dest_unset (widget);
}
else
{
g_warning ("%s(): unsupported GtkType", G_GNUC_FUNCTION);
}
}
/*************************/
/* brush dnd functions */
/*************************/
@ -684,6 +804,12 @@ gimp_dnd_brush_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_brush_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_BRUSH, widget);
}
/***************************/
/* pattern dnd functions */
/***************************/
@ -781,6 +907,12 @@ gimp_dnd_pattern_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_pattern_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_PATTERN, widget);
}
/****************************/
/* gradient dnd functions */
/****************************/
@ -882,6 +1014,12 @@ gimp_dnd_gradient_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_gradient_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_GRADIENT, widget);
}
/***************************/
/* palette dnd functions */
/***************************/
@ -934,6 +1072,12 @@ gimp_dnd_palette_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_palette_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_PALETTE, widget);
}
/************************/
/* tool dnd functions */
/************************/
@ -1029,6 +1173,12 @@ gimp_dnd_tool_dest_set (GtkWidget *widget,
data);
}
void
gimp_dnd_tool_dest_unset (GtkWidget *widget)
{
gimp_dnd_data_dest_unset (GIMP_DND_DATA_TOOL, widget);
}
/****************************/
/* drawable dnd functions */
/****************************/
@ -1265,4 +1415,3 @@ gimp_dnd_file_dest_set (GtkWidget *widget)
GTK_SIGNAL_FUNC (gimp_dnd_file_drag_data_received),
widget);
}

View File

@ -39,6 +39,14 @@ enum
GIMP_DND_TYPE_TOOL
};
typedef enum
{
GIMP_DROP_NONE,
GIMP_DROP_ABOVE,
GIMP_DROP_BELOW
} GimpDropType;
#define GIMP_TARGET_URI_LIST \
{ "text/uri-list", 0, GIMP_DND_TYPE_URI_LIST }
@ -84,12 +92,6 @@ enum
#define GIMP_TARGET_TOOL \
{ "GIMP_TOOL", GTK_TARGET_SAME_APP, GIMP_DND_TYPE_TOOL }
typedef enum
{
GIMP_DROP_NONE,
GIMP_DROP_ABOVE,
GIMP_DROP_BELOW
} GimpDropType;
/* color dnd functions */
@ -106,6 +108,26 @@ void gimp_dnd_color_source_set (GtkWidget *widget,
void gimp_dnd_color_dest_set (GtkWidget *widget,
GimpDndDropColorFunc set_color_func,
gpointer data);
void gimp_dnd_color_dest_unset (GtkWidget *widget);
/* GimpViewable (by GtkType) dnd functions */
typedef void (* GimpDndDropViewableFunc) (GtkWidget *widget,
GimpViewable *viewable,
gpointer data);
void gimp_gtk_drag_dest_set_by_type (GtkWidget *widget,
GtkDestDefaults flags,
GtkType type,
GdkDragAction actions);
void gimp_dnd_viewable_dest_set (GtkWidget *widget,
GtkType type,
GimpDndDropViewableFunc set_viewable_func,
gpointer data);
void gimp_dnd_viewable_dest_unset (GtkWidget *widget,
GtkType type);
/* brush dnd functions */
@ -121,6 +143,8 @@ void gimp_dnd_brush_source_set (GtkWidget *widget,
void gimp_dnd_brush_dest_set (GtkWidget *widget,
GimpDndDropBrushFunc set_brush_func,
gpointer data);
void gimp_dnd_brush_dest_unset (GtkWidget *widget);
/* pattern dnd functions */
@ -136,6 +160,8 @@ void gimp_dnd_pattern_source_set (GtkWidget *widget,
void gimp_dnd_pattern_dest_set (GtkWidget *widget,
GimpDndDropPatternFunc set_pattern_func,
gpointer data);
void gimp_dnd_pattern_dest_unset (GtkWidget *widget);
/* gradient dnd functions */
@ -151,6 +177,8 @@ void gimp_dnd_gradient_source_set (GtkWidget *widget,
void gimp_dnd_gradient_dest_set (GtkWidget *widget,
GimpDndDropGradientFunc set_gradient_func,
gpointer data);
void gimp_dnd_gradient_dest_unset (GtkWidget *widget);
/* palette dnd functions */
@ -166,6 +194,8 @@ void gimp_dnd_palette_source_set (GtkWidget *widget,
void gimp_dnd_palette_dest_set (GtkWidget *widget,
GimpDndDropPaletteFunc set_palette_func,
gpointer data);
void gimp_dnd_palette_dest_unset (GtkWidget *widget);
/* tool dnd functions */
@ -181,6 +211,8 @@ void gimp_dnd_tool_source_set (GtkWidget *widget,
void gimp_dnd_tool_dest_set (GtkWidget *widget,
GimpDndDropToolFunc set_tool_func,
gpointer data);
void gimp_dnd_tool_dest_unset (GtkWidget *widget);
/* drawable dnd functions */
@ -188,8 +220,10 @@ void gimp_dnd_set_drawable_preview_icon (GtkWidget *widget,
GdkDragContext *context,
GimpDrawable *drawable);
/* file / url dnd functions */
void gimp_dnd_file_dest_set (GtkWidget *widget);
#endif /* __GIMP_DND_H__ */

View File

@ -309,6 +309,41 @@ gimp_preview_new_full (GimpViewable *viewable,
return GTK_WIDGET (preview);
}
void
gimp_preview_set_size (GimpPreview *preview,
gint preview_size)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (preview_size > 0 && preview_size <= 256);
gimp_preview_set_size_full (preview,
preview_size,
preview_size,
preview->border_width);
}
void
gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
g_return_if_fail (border_width >= 0 && border_width <= 16);
preview->width = width;
preview->height = height;
preview->border_width = border_width;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
void
gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable)
@ -354,24 +389,6 @@ gimp_preview_set_context (GimpPreview *preview,
g_return_if_fail (! context || GIMP_IS_CONTEXT (context));
}
void
gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
preview->width = width;
preview->height = height;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
static gint
gimp_preview_button_press_event (GtkWidget *widget,
GdkEventButton *bevent)
@ -397,6 +414,10 @@ gimp_preview_button_press_event (GtkWidget *widget,
bevent->y);
}
}
else
{
return FALSE;
}
}
return TRUE;
@ -432,6 +453,10 @@ gimp_preview_button_release_event (GtkWidget *widget,
gtk_signal_emit (GTK_OBJECT (widget), preview_signals[CLICKED]);
}
}
else
{
return FALSE;
}
return TRUE;
}

View File

@ -78,10 +78,10 @@ struct _GimpPreviewClass
GtkType gimp_preview_get_type (void);
GtkWidget * gimp_preview_new (GimpViewable *viewable,
gint size,
gint border_width);
GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gint width,
gint height,
@ -90,13 +90,17 @@ GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gboolean clickable,
gboolean show_popup);
void gimp_preview_set_size (GimpPreview *preview,
gint size);
void gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width);
void gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable);
void gimp_preview_set_context (GimpPreview *preview,
GimpContext *context);
void gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height);
/* private */

View File

@ -309,6 +309,41 @@ gimp_preview_new_full (GimpViewable *viewable,
return GTK_WIDGET (preview);
}
void
gimp_preview_set_size (GimpPreview *preview,
gint preview_size)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (preview_size > 0 && preview_size <= 256);
gimp_preview_set_size_full (preview,
preview_size,
preview_size,
preview->border_width);
}
void
gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
g_return_if_fail (border_width >= 0 && border_width <= 16);
preview->width = width;
preview->height = height;
preview->border_width = border_width;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
void
gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable)
@ -354,24 +389,6 @@ gimp_preview_set_context (GimpPreview *preview,
g_return_if_fail (! context || GIMP_IS_CONTEXT (context));
}
void
gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
preview->width = width;
preview->height = height;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
static gint
gimp_preview_button_press_event (GtkWidget *widget,
GdkEventButton *bevent)
@ -397,6 +414,10 @@ gimp_preview_button_press_event (GtkWidget *widget,
bevent->y);
}
}
else
{
return FALSE;
}
}
return TRUE;
@ -432,6 +453,10 @@ gimp_preview_button_release_event (GtkWidget *widget,
gtk_signal_emit (GTK_OBJECT (widget), preview_signals[CLICKED]);
}
}
else
{
return FALSE;
}
return TRUE;
}

View File

@ -78,10 +78,10 @@ struct _GimpPreviewClass
GtkType gimp_preview_get_type (void);
GtkWidget * gimp_preview_new (GimpViewable *viewable,
gint size,
gint border_width);
GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gint width,
gint height,
@ -90,13 +90,17 @@ GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gboolean clickable,
gboolean show_popup);
void gimp_preview_set_size (GimpPreview *preview,
gint size);
void gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width);
void gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable);
void gimp_preview_set_context (GimpPreview *preview,
GimpContext *context);
void gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height);
/* private */

View File

@ -309,6 +309,41 @@ gimp_preview_new_full (GimpViewable *viewable,
return GTK_WIDGET (preview);
}
void
gimp_preview_set_size (GimpPreview *preview,
gint preview_size)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (preview_size > 0 && preview_size <= 256);
gimp_preview_set_size_full (preview,
preview_size,
preview_size,
preview->border_width);
}
void
gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
g_return_if_fail (border_width >= 0 && border_width <= 16);
preview->width = width;
preview->height = height;
preview->border_width = border_width;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
void
gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable)
@ -354,24 +389,6 @@ gimp_preview_set_context (GimpPreview *preview,
g_return_if_fail (! context || GIMP_IS_CONTEXT (context));
}
void
gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
preview->width = width;
preview->height = height;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
static gint
gimp_preview_button_press_event (GtkWidget *widget,
GdkEventButton *bevent)
@ -397,6 +414,10 @@ gimp_preview_button_press_event (GtkWidget *widget,
bevent->y);
}
}
else
{
return FALSE;
}
}
return TRUE;
@ -432,6 +453,10 @@ gimp_preview_button_release_event (GtkWidget *widget,
gtk_signal_emit (GTK_OBJECT (widget), preview_signals[CLICKED]);
}
}
else
{
return FALSE;
}
return TRUE;
}

View File

@ -78,10 +78,10 @@ struct _GimpPreviewClass
GtkType gimp_preview_get_type (void);
GtkWidget * gimp_preview_new (GimpViewable *viewable,
gint size,
gint border_width);
GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gint width,
gint height,
@ -90,13 +90,17 @@ GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gboolean clickable,
gboolean show_popup);
void gimp_preview_set_size (GimpPreview *preview,
gint size);
void gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width);
void gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable);
void gimp_preview_set_context (GimpPreview *preview,
GimpContext *context);
void gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height);
/* private */

View File

@ -309,6 +309,41 @@ gimp_preview_new_full (GimpViewable *viewable,
return GTK_WIDGET (preview);
}
void
gimp_preview_set_size (GimpPreview *preview,
gint preview_size)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (preview_size > 0 && preview_size <= 256);
gimp_preview_set_size_full (preview,
preview_size,
preview_size,
preview->border_width);
}
void
gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
g_return_if_fail (border_width >= 0 && border_width <= 16);
preview->width = width;
preview->height = height;
preview->border_width = border_width;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
void
gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable)
@ -354,24 +389,6 @@ gimp_preview_set_context (GimpPreview *preview,
g_return_if_fail (! context || GIMP_IS_CONTEXT (context));
}
void
gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height)
{
g_return_if_fail (preview != NULL);
g_return_if_fail (GIMP_IS_PREVIEW (preview));
g_return_if_fail (width > 0 && width <= 256);
g_return_if_fail (height > 0 && height <= 256);
preview->width = width;
preview->height = height;
gtk_preview_size (GTK_PREVIEW (preview),
width + 2 * preview->border_width,
height + 2 * preview->border_width);
}
static gint
gimp_preview_button_press_event (GtkWidget *widget,
GdkEventButton *bevent)
@ -397,6 +414,10 @@ gimp_preview_button_press_event (GtkWidget *widget,
bevent->y);
}
}
else
{
return FALSE;
}
}
return TRUE;
@ -432,6 +453,10 @@ gimp_preview_button_release_event (GtkWidget *widget,
gtk_signal_emit (GTK_OBJECT (widget), preview_signals[CLICKED]);
}
}
else
{
return FALSE;
}
return TRUE;
}

View File

@ -78,10 +78,10 @@ struct _GimpPreviewClass
GtkType gimp_preview_get_type (void);
GtkWidget * gimp_preview_new (GimpViewable *viewable,
gint size,
gint border_width);
GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gint width,
gint height,
@ -90,13 +90,17 @@ GtkWidget * gimp_preview_new_full (GimpViewable *viewable,
gboolean clickable,
gboolean show_popup);
void gimp_preview_set_size (GimpPreview *preview,
gint size);
void gimp_preview_set_size_full (GimpPreview *preview,
gint width,
gint height,
gint border_width);
void gimp_preview_set_viewable (GimpPreview *preview,
GimpViewable *viewable);
void gimp_preview_set_context (GimpPreview *preview,
GimpContext *context);
void gimp_preview_set_size (GimpPreview *preview,
gint width,
gint height);
/* private */