use "gimp-item-data" instead of "user_data" as data key when attaching

2001-11-22  Michael Natterer  <mitch@gimp.org>

	* libgimpwidgets/gimpwidgets.[ch]: use "gimp-item-data" instead of
	"user_data" as data key when attaching values to radio buttons or
	menu items. (For backward compat, attach "user_data" additionally,
	but don't use it to _get_data()).
	Added gimp_radio_group_set_active() which works like
	gimp_options_menu_set_history() and sets the active item by
	attached "gimp-item-data" value.

	* app/gui/brush-select.c
	* app/gui/file-new-dialog.c
	* app/gui/info-window.c
	* app/gui/preferences-dialog.c
	* app/gui/resolution-calibrate-dialog.c
	* app/tools/gimpbucketfilltool.c
	* app/tools/gimpselectiontool.c
	* app/tools/paint_options.c
	* app/tools/selection_options.c
	* app/widgets/gimplayerlistview.c: removed all kinds of
	"user_data" stuff and evil hacks to find a radio button by the
	value it represents (simply call gimp_radio_group_set_active()).

	* app/tools/gimpdrawtool.c: added a g_return_if_fail().

	* app/tools/gimpfliptool.c: don't set draw_tool_class->draw to NULL,

	* app/tools/gimptransformtool.[ch]: fixed some stuff i broke when
	removing the old "interactive" boolean (there is no
	non-interactive transform tool any more).  Put the info_dialog
	pointer and the old_trans_info array into the GimpTransformTool
	instance. Added gimp_transform_tool_info_dialog_connect(). Don't
	include any subclasses any more.

	* app/tools/gimpperspectivetool.c
	* app/tools/gimprotatetool.c
	* app/tools/gimpscaletool.c
	* app/tools/gimpsheartool.c: use
	gimp_transform_tool_info_dialog_connect() to create and connect
	the info dialogs' action_area.
This commit is contained in:
Michael Natterer 2001-11-22 13:01:26 +00:00 committed by Michael Natterer
parent 2a33106bd3
commit a08f3ac001
28 changed files with 418 additions and 306 deletions

View File

@ -1,3 +1,44 @@
2001-11-22 Michael Natterer <mitch@gimp.org>
* libgimpwidgets/gimpwidgets.[ch]: use "gimp-item-data" instead of
"user_data" as data key when attaching values to radio buttons or
menu items. (For backward compat, attach "user_data" additionally,
but don't use it to _get_data()).
Added gimp_radio_group_set_active() which works like
gimp_options_menu_set_history() and sets the active item by
attached "gimp-item-data" value.
* app/gui/brush-select.c
* app/gui/file-new-dialog.c
* app/gui/info-window.c
* app/gui/preferences-dialog.c
* app/gui/resolution-calibrate-dialog.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpselectiontool.c
* app/tools/paint_options.c
* app/tools/selection_options.c
* app/widgets/gimplayerlistview.c: removed all kinds of
"user_data" stuff and evil hacks to find a radio button by the
value it represents (simply call gimp_radio_group_set_active()).
* app/tools/gimpdrawtool.c: added a g_return_if_fail().
* app/tools/gimpfliptool.c: don't set draw_tool_class->draw to NULL,
* app/tools/gimptransformtool.[ch]: fixed some stuff i broke when
removing the old "interactive" boolean (there is no
non-interactive transform tool any more). Put the info_dialog
pointer and the old_trans_info array into the GimpTransformTool
instance. Added gimp_transform_tool_info_dialog_connect(). Don't
include any subclasses any more.
* app/tools/gimpperspectivetool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c
* app/tools/gimpsheartool.c: use
gimp_transform_tool_info_dialog_connect() to create and connect
the info dialogs' action_area.
2001-11-21 Sven Neumann <sven@gimp.org>
* app/gui/splash.c: sink the GtkPreview created for the splash.

View File

@ -371,7 +371,7 @@ file_new_dialog_create (Gimp *gimp,
button = gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, FALSE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "user_data",
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
@ -412,7 +412,7 @@ file_new_dialog_create (Gimp *gimp,
gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, TRUE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "user_data",
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
@ -513,10 +513,12 @@ file_new_reset_callback (GtkWidget *widget,
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (info->size_se),
info->gimp->config->default_units);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (info->type_w[info->gimp->config->default_type]),
TRUE);
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (info->fill_type_w[BACKGROUND_FILL]), TRUE);
gimp_radio_group_set_active
(GTK_RADIO_BUTTON (info->type_w[0]),
GINT_TO_POINTER (info->gimp->config->default_type));
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w[0]),
GINT_TO_POINTER (BACKGROUND_FILL));
}
static void

View File

@ -123,7 +123,8 @@ info_window_page_switch (GtkWidget *widget,
InfoDialog *info_win;
InfoWinData *iwd;
info_win = (InfoDialog *) g_object_get_data (G_OBJECT (widget), "user_data");
info_win = (InfoDialog *) g_object_get_data (G_OBJECT (widget),
"gimp-info-window");
iwd = (InfoWinData *) info_win->user_data;
/* Only deal with the second page */
@ -297,7 +298,7 @@ info_window_create_extended (InfoDialog *info_win,
/* Set back to first page */
gtk_notebook_set_current_page (GTK_NOTEBOOK (info_win->info_notebook), 0);
g_object_set_data (G_OBJECT (info_win->info_notebook), "user_data",
g_object_set_data (G_OBJECT (info_win->info_notebook), "gimp-info-window",
info_win);
g_signal_connect (G_OBJECT (info_win->info_notebook), "switch_page",

View File

@ -1036,7 +1036,7 @@ prefs_toggle_callback (GtkWidget *widget,
data == &gimprc.cursor_mode)
{
*val = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"user_data"));
"gimp-item-data"));
}
/* values which need some magic */
@ -1044,7 +1044,7 @@ prefs_toggle_callback (GtkWidget *widget,
(data == &gimprc.transparency_size))
{
*val = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"user_data"));
"gimp-item-data"));
render_setup (gimprc.transparency_type, gimprc.transparency_size);
gimp_container_foreach (gimp->images,
@ -1078,7 +1078,8 @@ prefs_preview_size_callback (GtkWidget *widget,
#warning FIXME: update preview size
#endif
#if 0
lc_dialog_rebuild ((long) g_object_get_data (G_OBJECT (widget), "user_data"));
lc_dialog_rebuild ((long) g_object_get_data (G_OBJECT (widget),
"gimp-item-data"));
#endif
}
@ -1087,7 +1088,7 @@ prefs_nav_preview_size_callback (GtkWidget *widget,
gpointer data)
{
gimprc.nav_preview_size =
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "user_data"));
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "gimp-item-data"));
gdisplays_nav_preview_resized ();
}

View File

@ -47,7 +47,7 @@ resolution_calibrate_ok (GtkWidget *button,
GtkWidget *chain_button;
gdouble x, y;
resolution_entry = g_object_get_data (G_OBJECT (data), "user_data");
resolution_entry = g_object_get_data (G_OBJECT (data), "resolution-entry");
x = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (calibrate_entry), 0);
y = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (calibrate_entry), 1);
@ -120,7 +120,7 @@ resolution_calibrate_dialog (GtkWidget *resolution_entry,
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (gtk_main_quit),
NULL);
g_object_set_data (G_OBJECT (dialog), "user_data", resolution_entry);
g_object_set_data (G_OBJECT (dialog), "resolution-entry", resolution_entry);
g_signal_connect_object (G_OBJECT (resolution_entry), "destroy",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (dialog), G_CONNECT_SWAPPED);

View File

@ -523,7 +523,7 @@ paint_mode_menu_callback (GtkWidget *widget,
bsp = (BrushSelect *) data;
paint_mode = (LayerModeEffects)
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "user_data"));
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "gimp-item-data"));
gimp_context_set_paint_mode (bsp->context, paint_mode);
}

View File

@ -371,7 +371,7 @@ file_new_dialog_create (Gimp *gimp,
button = gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, FALSE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "user_data",
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
@ -412,7 +412,7 @@ file_new_dialog_create (Gimp *gimp,
gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, TRUE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "user_data",
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
@ -513,10 +513,12 @@ file_new_reset_callback (GtkWidget *widget,
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (info->size_se),
info->gimp->config->default_units);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (info->type_w[info->gimp->config->default_type]),
TRUE);
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (info->fill_type_w[BACKGROUND_FILL]), TRUE);
gimp_radio_group_set_active
(GTK_RADIO_BUTTON (info->type_w[0]),
GINT_TO_POINTER (info->gimp->config->default_type));
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w[0]),
GINT_TO_POINTER (BACKGROUND_FILL));
}
static void

View File

@ -123,7 +123,8 @@ info_window_page_switch (GtkWidget *widget,
InfoDialog *info_win;
InfoWinData *iwd;
info_win = (InfoDialog *) g_object_get_data (G_OBJECT (widget), "user_data");
info_win = (InfoDialog *) g_object_get_data (G_OBJECT (widget),
"gimp-info-window");
iwd = (InfoWinData *) info_win->user_data;
/* Only deal with the second page */
@ -297,7 +298,7 @@ info_window_create_extended (InfoDialog *info_win,
/* Set back to first page */
gtk_notebook_set_current_page (GTK_NOTEBOOK (info_win->info_notebook), 0);
g_object_set_data (G_OBJECT (info_win->info_notebook), "user_data",
g_object_set_data (G_OBJECT (info_win->info_notebook), "gimp-info-window",
info_win);
g_signal_connect (G_OBJECT (info_win->info_notebook), "switch_page",

View File

@ -1036,7 +1036,7 @@ prefs_toggle_callback (GtkWidget *widget,
data == &gimprc.cursor_mode)
{
*val = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"user_data"));
"gimp-item-data"));
}
/* values which need some magic */
@ -1044,7 +1044,7 @@ prefs_toggle_callback (GtkWidget *widget,
(data == &gimprc.transparency_size))
{
*val = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"user_data"));
"gimp-item-data"));
render_setup (gimprc.transparency_type, gimprc.transparency_size);
gimp_container_foreach (gimp->images,
@ -1078,7 +1078,8 @@ prefs_preview_size_callback (GtkWidget *widget,
#warning FIXME: update preview size
#endif
#if 0
lc_dialog_rebuild ((long) g_object_get_data (G_OBJECT (widget), "user_data"));
lc_dialog_rebuild ((long) g_object_get_data (G_OBJECT (widget),
"gimp-item-data"));
#endif
}
@ -1087,7 +1088,7 @@ prefs_nav_preview_size_callback (GtkWidget *widget,
gpointer data)
{
gimprc.nav_preview_size =
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "user_data"));
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "gimp-item-data"));
gdisplays_nav_preview_resized ();
}

View File

@ -47,7 +47,7 @@ resolution_calibrate_ok (GtkWidget *button,
GtkWidget *chain_button;
gdouble x, y;
resolution_entry = g_object_get_data (G_OBJECT (data), "user_data");
resolution_entry = g_object_get_data (G_OBJECT (data), "resolution-entry");
x = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (calibrate_entry), 0);
y = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (calibrate_entry), 1);
@ -120,7 +120,7 @@ resolution_calibrate_dialog (GtkWidget *resolution_entry,
g_signal_connect (G_OBJECT (dialog), "destroy",
G_CALLBACK (gtk_main_quit),
NULL);
g_object_set_data (G_OBJECT (dialog), "user_data", resolution_entry);
g_object_set_data (G_OBJECT (dialog), "resolution-entry", resolution_entry);
g_signal_connect_object (G_OBJECT (resolution_entry), "destroy",
G_CALLBACK (gtk_widget_destroy),
G_OBJECT (dialog), G_CONNECT_SWAPPED);

View File

@ -284,12 +284,14 @@ gimp_bucket_fill_tool_modifier_key (GimpTool *tool,
switch (options->fill_mode)
{
case FG_BUCKET_FILL:
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (options->fill_mode_w[BG_BUCKET_FILL]), TRUE);
gimp_radio_group_set_active
(GTK_RADIO_BUTTON (options->fill_mode_w[0]),
GINT_TO_POINTER (BG_BUCKET_FILL));
break;
case BG_BUCKET_FILL:
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (options->fill_mode_w[FG_BUCKET_FILL]), TRUE);
gimp_radio_group_set_active
(GTK_RADIO_BUTTON (options->fill_mode_w[0]),
GINT_TO_POINTER (FG_BUCKET_FILL));
break;
default:
break;
@ -446,7 +448,10 @@ bucket_options_reset (GimpToolOptions *tool_options)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->sample_merged_w),
options->sample_merged_d);
gtk_adjustment_set_value (GTK_ADJUSTMENT (options->threshold_w),
gimprc.default_threshold);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->fill_mode_w[options->fill_mode_d]), TRUE);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (options->fill_mode_w[0]),
GINT_TO_POINTER (options->fill_mode_d));
}

View File

@ -216,6 +216,8 @@ gimp_draw_tool_stop (GimpDrawTool *draw_tool)
void
gimp_draw_tool_pause (GimpDrawTool *draw_tool)
{
g_return_if_fail (GIMP_IS_DRAW_TOOL (draw_tool));
if (draw_tool->paused_count == 0)
{
draw_tool->draw_state = GIMP_DRAW_TOOL_STATE_INVISIBLE;

View File

@ -44,10 +44,6 @@
#include "libgimp/gimpintl.h"
/* FIXME: Lame - 1 hacks abound since the code assumes certain values for
* the ORIENTATION_FOO constants.
*/
typedef struct _FlipOptions FlipOptions;
struct _FlipOptions
@ -139,11 +135,9 @@ static void
gimp_flip_tool_class_init (GimpFlipToolClass *klass)
{
GimpToolClass *tool_class;
GimpDrawToolClass *draw_class;
GimpTransformToolClass *trans_class;
tool_class = GIMP_TOOL_CLASS (klass);
draw_class = GIMP_DRAW_TOOL_CLASS (klass);
trans_class = GIMP_TRANSFORM_TOOL_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
@ -151,8 +145,6 @@ gimp_flip_tool_class_init (GimpFlipToolClass *klass)
tool_class->modifier_key = gimp_flip_tool_modifier_key;
tool_class->cursor_update = gimp_flip_tool_cursor_update;
draw_class->draw = NULL;
trans_class->transform = gimp_flip_tool_transform;
}
@ -189,14 +181,12 @@ gimp_flip_tool_modifier_key (GimpTool *tool,
switch (options->type)
{
case ORIENTATION_HORIZONTAL:
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (options->type_w[ORIENTATION_VERTICAL - 1]),
TRUE);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (options->type_w[0]),
GINT_TO_POINTER (ORIENTATION_VERTICAL));
break;
case ORIENTATION_VERTICAL:
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (options->type_w[ORIENTATION_HORIZONTAL - 1]),
TRUE);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (options->type_w[0]),
GINT_TO_POINTER (ORIENTATION_HORIZONTAL));
break;
default:
break;
@ -266,7 +256,6 @@ gimp_flip_tool_transform (GimpTransformTool *trans_tool,
switch (state)
{
case TRANSFORM_INIT:
transform_info = NULL;
break;
case TRANSFORM_MOTION:
@ -335,6 +324,6 @@ flip_options_reset (GimpToolOptions *tool_options)
options = (FlipOptions *) tool_options;
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (options->type_w[options->type_d - 1]), TRUE);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (options->type_w[0]),
GINT_TO_POINTER (options->type_d));
}

View File

@ -777,7 +777,7 @@ paint_options_paint_mode_update (GtkWidget *widget,
PaintOptions *options;
paint_mode =
(LayerModeEffects) g_object_get_data (G_OBJECT (widget), "user_data");
(LayerModeEffects) g_object_get_data (G_OBJECT (widget), "gimp-item-data");
options = (PaintOptions *) data;

View File

@ -139,29 +139,35 @@ gimp_perspective_tool_transform (GimpTransformTool *transform_tool,
switch (state)
{
case TRANSFORM_INIT:
if (! transform_info)
if (! transform_tool->info_dialog)
{
transform_info =
transform_tool->info_dialog =
info_dialog_new (_("Perspective Transform Information"),
gimp_standard_help_func,
"tools/transform_perspective.html");
info_dialog_add_label (transform_info, _("Matrix:"),
gimp_transform_tool_info_dialog_connect (transform_tool,
_("Transform"));
info_dialog_add_label (transform_tool->info_dialog, _("Matrix:"),
matrix_row_buf[0]);
info_dialog_add_label (transform_info, "", matrix_row_buf[1]);
info_dialog_add_label (transform_info, "", matrix_row_buf[2]);
info_dialog_add_label (transform_tool->info_dialog, "",
matrix_row_buf[1]);
info_dialog_add_label (transform_tool->info_dialog, "",
matrix_row_buf[2]);
}
gtk_widget_set_sensitive (GTK_WIDGET (transform_info->shell), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (transform_tool->info_dialog->shell),
TRUE);
transform_tool->trans_info [X0] = (gdouble) transform_tool->x1;
transform_tool->trans_info [Y0] = (gdouble) transform_tool->y1;
transform_tool->trans_info [X1] = (gdouble) transform_tool->x2;
transform_tool->trans_info [Y1] = (gdouble) transform_tool->y1;
transform_tool->trans_info [X2] = (gdouble) transform_tool->x1;
transform_tool->trans_info [Y2] = (gdouble) transform_tool->y2;
transform_tool->trans_info [X3] = (gdouble) transform_tool->x2;
transform_tool->trans_info [Y3] = (gdouble) transform_tool->y2;
transform_tool->trans_info[X0] = (gdouble) transform_tool->x1;
transform_tool->trans_info[Y0] = (gdouble) transform_tool->y1;
transform_tool->trans_info[X1] = (gdouble) transform_tool->x2;
transform_tool->trans_info[Y1] = (gdouble) transform_tool->y1;
transform_tool->trans_info[X2] = (gdouble) transform_tool->x1;
transform_tool->trans_info[Y2] = (gdouble) transform_tool->y2;
transform_tool->trans_info[X3] = (gdouble) transform_tool->x2;
transform_tool->trans_info[Y3] = (gdouble) transform_tool->y2;
break;
case TRANSFORM_MOTION:
@ -199,8 +205,8 @@ perspective_info_update (GimpTransformTool *transform_tool)
}
}
info_dialog_update (transform_info);
info_dialog_popup (transform_info);
info_dialog_update (transform_tool->info_dialog);
info_dialog_popup (transform_tool->info_dialog);
}
static void

View File

@ -165,17 +165,21 @@ gimp_rotate_tool_transform (GimpTransformTool *transform_tool,
center_vals[0] = transform_tool->cx;
center_vals[1] = transform_tool->cy;
if (! transform_info)
if (! transform_tool->info_dialog)
{
GtkWidget *widget;
GtkWidget *spinbutton2;
transform_info = info_dialog_new (_("Rotation Information"),
gimp_standard_help_func,
"tools/transform_rotate.html");
transform_tool->info_dialog =
info_dialog_new (_("Rotation Information"),
gimp_standard_help_func,
"tools/transform_rotate.html");
gimp_transform_tool_info_dialog_connect (transform_tool,
_("Rotate"));
widget =
info_dialog_add_spinbutton (transform_info, _("Angle:"),
info_dialog_add_spinbutton (transform_tool->info_dialog, _("Angle:"),
&angle_val,
-180, 180, 1, 15, 1, 1, 2,
G_CALLBACK (rotate_angle_changed),
@ -183,17 +187,20 @@ gimp_rotate_tool_transform (GimpTransformTool *transform_tool,
gtk_spin_button_set_wrap (GTK_SPIN_BUTTON (widget), TRUE);
/* this looks strange (-180, 181), but it works */
widget = info_dialog_add_scale (transform_info, "", &angle_val,
widget = info_dialog_add_scale (transform_tool->info_dialog, "",
&angle_val,
-180, 181, 0.01, 0.1, 1, -1,
G_CALLBACK (rotate_angle_changed),
transform_tool);
gtk_widget_set_usize (widget, 180, 0);
spinbutton2 =
info_dialog_add_spinbutton (transform_info, _("Center X:"), NULL,
info_dialog_add_spinbutton (transform_tool->info_dialog,
_("Center X:"),
NULL,
-1, 1, 1, 10, 1, 1, 2, NULL, NULL);
sizeentry =
info_dialog_add_sizeentry (transform_info, _("Y:"),
info_dialog_add_sizeentry (transform_tool->info_dialog, _("Y:"),
center_vals, 1,
gdisp->gimage->unit, "%a",
TRUE, TRUE, FALSE,
@ -204,9 +211,9 @@ gimp_rotate_tool_transform (GimpTransformTool *transform_tool,
gimp_size_entry_add_field (GIMP_SIZE_ENTRY (sizeentry),
GTK_SPIN_BUTTON (spinbutton2), NULL);
gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table),
gtk_table_set_row_spacing (GTK_TABLE (transform_tool->info_dialog->info_table),
1, 6);
gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table),
gtk_table_set_row_spacing (GTK_TABLE (transform_tool->info_dialog->info_table),
2, 0);
}
@ -245,7 +252,7 @@ gimp_rotate_tool_transform (GimpTransformTool *transform_tool,
rotate_center_changed,
transform_tool);
gtk_widget_set_sensitive (transform_info->shell, TRUE);
gtk_widget_set_sensitive (transform_tool->info_dialog->shell, TRUE);
transform_tool->trans_info[ANGLE] = angle_val;
transform_tool->trans_info[REAL_ANGLE] = angle_val;
@ -278,8 +285,8 @@ rotate_info_update (GimpTransformTool *transform_tool)
center_vals[0] = transform_tool->trans_info[CENTER_X];
center_vals[1] = transform_tool->trans_info[CENTER_Y];
info_dialog_update (transform_info);
info_dialog_popup (transform_info);
info_dialog_update (transform_tool->info_dialog);
info_dialog_popup (transform_tool->info_dialog);
}
static void

View File

@ -163,24 +163,32 @@ gimp_scale_tool_transform (GimpTransformTool *transform_tool,
size_vals[0] = transform_tool->x2 - transform_tool->x1;
size_vals[1] = transform_tool->y2 - transform_tool->y1;
if (! transform_info)
if (! transform_tool->info_dialog)
{
GtkWidget *spinbutton;
transform_info = info_dialog_new (_("Scaling Information"),
gimp_standard_help_func,
"tools/transform_scale.html");
transform_tool->info_dialog =
info_dialog_new (_("Scaling Information"),
gimp_standard_help_func,
"tools/transform_scale.html");
info_dialog_add_label (transform_info, _("Original Width:"),
gimp_transform_tool_info_dialog_connect (transform_tool,
_("Scale"));
info_dialog_add_label (transform_tool->info_dialog,
_("Original Width:"),
orig_width_buf);
info_dialog_add_label (transform_info, _("Height:"),
info_dialog_add_label (transform_tool->info_dialog,
_("Height:"),
orig_height_buf);
spinbutton =
info_dialog_add_spinbutton (transform_info, _("Current Width:"),
info_dialog_add_spinbutton (transform_tool->info_dialog,
_("Current Width:"),
NULL, -1, 1, 1, 10, 1, 1, 2, NULL, NULL);
sizeentry =
info_dialog_add_sizeentry (transform_info, _("Height:"),
info_dialog_add_sizeentry (transform_tool->info_dialog,
_("Height:"),
size_vals, 1,
gdisp->gimage->unit, "%a",
TRUE, TRUE, FALSE,
@ -194,15 +202,17 @@ gimp_scale_tool_transform (GimpTransformTool *transform_tool,
gimp_size_entry_add_field (GIMP_SIZE_ENTRY (sizeentry),
GTK_SPIN_BUTTON (spinbutton), NULL);
info_dialog_add_label (transform_info, _("Scale Ratio X:"),
info_dialog_add_label (transform_tool->info_dialog,
_("Scale Ratio X:"),
x_ratio_buf);
info_dialog_add_label (transform_info, _("Y:"),
info_dialog_add_label (transform_tool->info_dialog,
_("Y:"),
y_ratio_buf);
gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table),
1, 4);
gtk_table_set_row_spacing (GTK_TABLE (transform_info->info_table),
2, 0);
gtk_table_set_row_spacing
(GTK_TABLE (transform_tool->info_dialog->info_table), 1, 4);
gtk_table_set_row_spacing
(GTK_TABLE (transform_tool->info_dialog->info_table), 2, 0);
}
g_signal_handlers_block_by_func (G_OBJECT (sizeentry),
@ -246,7 +256,8 @@ gimp_scale_tool_transform (GimpTransformTool *transform_tool,
gimp_scale_tool_unit_changed,
transform_tool);
gtk_widget_set_sensitive (GTK_WIDGET (transform_info->shell), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (transform_tool->info_dialog->shell),
TRUE);
transform_tool->trans_info[X0] = (gdouble) transform_tool->x1;
transform_tool->trans_info[Y0] = (gdouble) transform_tool->y1;
@ -334,8 +345,8 @@ gimp_scale_tool_info_update (GimpTransformTool *transform_tool)
g_snprintf (x_ratio_buf, sizeof (x_ratio_buf), "%0.2f", ratio_x);
g_snprintf (y_ratio_buf, sizeof (y_ratio_buf), "%0.2f", ratio_y);
info_dialog_update (transform_info);
info_dialog_popup (transform_info);
info_dialog_update (transform_tool->info_dialog);
info_dialog_popup (transform_tool->info_dialog);
}
static void

View File

@ -125,8 +125,7 @@ selection_options_init (SelectionOptions *options,
{
options->op_w[i] = gtk_radio_button_new (group);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (options->op_w[i]));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (options->op_w[i]),
FALSE);
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (options->op_w[i]), FALSE);
gtk_box_pack_start (GTK_BOX (hbox), options->op_w[i], FALSE, FALSE, 0);
gtk_widget_show (options->op_w[i]);
@ -141,7 +140,7 @@ selection_options_init (SelectionOptions *options,
TRUE);
}
g_object_set_data (G_OBJECT (options->op_w[i]), "user_data",
g_object_set_data (G_OBJECT (options->op_w[i]), "gimp-item-data",
GINT_TO_POINTER (select_op_entries[i].op));
g_signal_connect (G_OBJECT (options->op_w[i]), "toggled",
G_CALLBACK (gimp_radio_button_update),
@ -432,6 +431,12 @@ selection_options_reset (GimpToolOptions *tool_options)
options = (SelectionOptions *) tool_options;
if (options->op_w[0])
{
gimp_radio_group_set_active (GTK_RADIO_BUTTON (options->op_w[0]),
GINT_TO_POINTER (options->op_d));
}
if (options->feather_w)
{
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->feather_w),

View File

@ -21,6 +21,8 @@
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
#include "libgimpwidgets/gimpwidgets.h"
#include "tools-types.h"
#include "core/gimpimage.h"
@ -118,13 +120,14 @@ gimp_selection_tool_modifier_key (GimpTool *tool,
{
GimpSelectionTool *selection_tool;
SelectionOptions *sel_options;
gint eek[4] = { 1, 2, 0, 3 };
gint press_button = -1;
SelectOps button_op;
selection_tool = GIMP_SELECTION_TOOL (tool);
sel_options = (SelectionOptions *) tool->tool_info->tool_options;
button_op = sel_options->op;
if (key == GDK_SHIFT_MASK || key == GDK_CONTROL_MASK)
{
if (press)
@ -138,27 +141,27 @@ gimp_selection_tool_modifier_key (GimpTool *tool,
{
if (! state) /* last modifier released */
{
press_button = eek[selection_tool->saved_op];
button_op = selection_tool->saved_op;
}
}
if ((state & GDK_CONTROL_MASK) && (state & GDK_SHIFT_MASK))
{
press_button = eek[SELECTION_INTERSECT];
button_op = SELECTION_INTERSECT;
}
else if (state & GDK_SHIFT_MASK)
{
press_button = eek[SELECTION_ADD];
button_op = SELECTION_ADD;
}
else if (state & GDK_CONTROL_MASK)
{
press_button = eek[SELECTION_SUB];
button_op = SELECTION_SUB;
}
if (press_button != -1)
if (button_op != sel_options->op)
{
gtk_toggle_button_set_active
(GTK_TOGGLE_BUTTON (sel_options->op_w[press_button]), TRUE);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (sel_options->op_w[0]),
GINT_TO_POINTER (button_op));
}
}
}

View File

@ -156,20 +156,24 @@ gimp_shear_tool_transform (GimpTransformTool *transform_tool,
switch (state)
{
case TRANSFORM_INIT:
if (! transform_info)
if (! transform_tool->info_dialog)
{
transform_info = info_dialog_new (_("Shear Information"),
gimp_standard_help_func,
"tools/transform_shear.html");
transform_tool->info_dialog =
info_dialog_new (_("Shear Information"),
gimp_standard_help_func,
"tools/transform_shear.html");
info_dialog_add_spinbutton (transform_info,
gimp_transform_tool_info_dialog_connect (transform_tool,
_("Shear"));
info_dialog_add_spinbutton (transform_tool->info_dialog,
_("Shear Magnitude X:"),
&xshear_val,
-65536, 65536, 1, 15, 1, 1, 0,
G_CALLBACK (shear_x_mag_changed),
transform_tool);
info_dialog_add_spinbutton (transform_info,
info_dialog_add_spinbutton (transform_tool->info_dialog,
_("Y:"),
&yshear_val,
-65536, 65536, 1, 15, 1, 1, 0,
@ -177,7 +181,8 @@ gimp_shear_tool_transform (GimpTransformTool *transform_tool,
transform_tool);
}
gtk_widget_set_sensitive (GTK_WIDGET (transform_info->shell), TRUE);
gtk_widget_set_sensitive (GTK_WIDGET (transform_tool->info_dialog->shell),
TRUE);
transform_tool->trans_info[HORZ_OR_VERT] = ORIENTATION_UNKNOWN;
transform_tool->trans_info[XSHEAR] = 0.0;
@ -208,8 +213,8 @@ shear_info_update (GimpTransformTool *transform_tool)
xshear_val = transform_tool->trans_info[XSHEAR];
yshear_val = transform_tool->trans_info[YSHEAR];
info_dialog_update (transform_info);
info_dialog_popup (transform_info);
info_dialog_update (transform_tool->info_dialog);
info_dialog_popup (transform_tool->info_dialog);
}
static void

View File

@ -47,14 +47,9 @@
#include "display/gimpdisplay-foreach.h"
#include "display/gimpdisplayshell.h"
#include "gimptransformtool.h"
#include "tool_manager.h"
#include "transform_options.h"
#include "gimptransformtool.h"
#include "gimpperspectivetool.h"
#include "gimprotatetool.h"
#include "gimpscaletool.h"
#include "gimpsheartool.h"
#include "gimpfliptool.h"
#include "floating_sel.h"
#include "gimpprogress.h"
@ -120,11 +115,6 @@ static void transform_reset_callback (GtkWidget *widget,
gpointer data);
/* variables */
static TransInfo old_trans_info;
InfoDialog *transform_info = NULL;
static gboolean transform_info_inited = FALSE;
static GimpDrawToolClass *parent_class = NULL;
@ -192,7 +182,10 @@ gimp_transform_tool_init (GimpTransformTool *transform_tool)
transform_tool->original = NULL;
for (i = 0; i < TRAN_INFO_SIZE; i++)
transform_tool->trans_info[i] = 0.0;
{
transform_tool->trans_info[i] = 0.0;
transform_tool->old_trans_info[i] = 0.0;
}
gimp_matrix3_identity (transform_tool->transform);
@ -202,9 +195,10 @@ gimp_transform_tool_init (GimpTransformTool *transform_tool)
transform_tool->grid_coords = NULL;
transform_tool->tgrid_coords = NULL;
transform_tool->info_dialog = NULL;
tool->scroll_lock = TRUE; /* Disallow scrolling */
tool->preserve = FALSE; /* Don't preserve on drawable change */
}
static void
@ -220,11 +214,10 @@ gimp_transform_tool_finalize (GObject *object)
tr_tool->original = NULL;
}
if (transform_info)
if (tr_tool->info_dialog)
{
info_dialog_free (transform_info);
transform_info = NULL;
transform_info_inited = FALSE;
info_dialog_free (tr_tool->info_dialog);
tr_tool->info_dialog = NULL;
}
if (tr_tool->grid_coords)
@ -262,6 +255,7 @@ gimp_transform_tool_control (GimpTool *tool,
case HALT:
gimp_transform_tool_reset (transform_tool, gdisp);
return; /* don't upchain */
break;
default:
@ -282,9 +276,6 @@ gimp_transform_tool_button_press (GimpTool *tool,
GimpDrawTool *draw_tool;
GimpDisplayShell *shell;
GimpDrawable *drawable;
gdouble dist;
gdouble closest_dist;
gint i;
gint off_x, off_y;
tr_tool = GIMP_TRANSFORM_TOOL (tool);
@ -296,9 +287,11 @@ gimp_transform_tool_button_press (GimpTool *tool,
if (tr_tool->function == TRANSFORM_CREATING && tool->state == ACTIVE)
{
gint i;
/* Save the current transformation info */
for (i = 0; i < TRAN_INFO_SIZE; i++)
old_trans_info[i] = tr_tool->trans_info[i];
tr_tool->old_trans_info[i] = tr_tool->trans_info[i];
}
/* if we have already displayed the bounding box and handles,
@ -307,8 +300,8 @@ gimp_transform_tool_button_press (GimpTool *tool,
*/
if (gdisp == tool->gdisp)
{
/* start drawing the bounding box and handles... */
gimp_draw_tool_start (GIMP_DRAW_TOOL (tool), shell->canvas->window);
gdouble closest_dist;
gdouble dist;
closest_dist = gimp_draw_tool_calc_distance (draw_tool, gdisp,
coords->x, coords->y,
@ -393,19 +386,17 @@ gimp_transform_tool_button_press (GimpTool *tool,
* and reset
*/
if (tool->state == ACTIVE)
gimp_transform_tool_reset (tr_tool, gdisp);
{
g_warning ("%s: tool_already ACTIVE", G_GNUC_FUNCTION);
gimp_transform_tool_reset (tr_tool, gdisp);
}
/* Set the pointer to the active display */
tool->gdisp = gdisp;
tool->drawable = drawable;
tool->state = ACTIVE;
gdk_pointer_grab (shell->canvas->window, FALSE,
GDK_POINTER_MOTION_HINT_MASK |
GDK_BUTTON1_MOTION_MASK |
GDK_BUTTON_RELEASE_MASK,
NULL, NULL, time);
/* Find the transform bounds for some tools (like scale,
* perspective) that actually need the bounds for
* initializing
@ -415,36 +406,12 @@ gimp_transform_tool_button_press (GimpTool *tool,
/* Initialize the transform tool */
gimp_transform_tool_transform (tr_tool, gdisp, TRANSFORM_INIT);
if (transform_info && ! transform_info_inited)
{
GType tool_type;
tool_type =
gimp_context_get_tool (gimp_get_user_context (gdisp->gimage->gimp))->tool_type;
gimp_dialog_create_action_area
(GIMP_DIALOG (transform_info->shell),
/* FIXME: this does not belong here */
(tool_type == GIMP_TYPE_ROTATE_TOOL) ? _("Rotate") :
(tool_type == GIMP_TYPE_SCALE_TOOL) ? _("Scale") :
(tool_type == GIMP_TYPE_SHEAR_TOOL) ? _("Shear") :
(tool_type == GIMP_TYPE_PERSPECTIVE_TOOL) ? _("Transform") :
"EEK",
transform_ok_callback,
tool, NULL, NULL, TRUE, FALSE,
_("Reset"), transform_reset_callback,
tool, NULL, NULL, FALSE, FALSE,
NULL);
transform_info_inited = TRUE;
}
/* Recalculate the transform tool */
gimp_transform_tool_recalc (tr_tool, gdisp);
/* start drawing the bounding box and handles... */
gimp_draw_tool_start (GIMP_DRAW_TOOL (tool), shell->canvas->window);
/* recall this function to find which handle we're dragging */
gimp_transform_tool_button_press (tool, coords, time, state, gdisp);
}
@ -475,7 +442,7 @@ gimp_transform_tool_button_release (GimpTool *tool,
if (! (state & GDK_BUTTON3_MASK))
{
/* Shift-clicking is another way to approve the transform */
if ((state & GDK_SHIFT_MASK) || GIMP_IS_FLIP_TOOL (tool))
if ((state & GDK_SHIFT_MASK) || ! tr_tool->use_grid)
{
gimp_transform_tool_doit (tr_tool, gdisp);
}
@ -488,25 +455,21 @@ gimp_transform_tool_button_release (GimpTool *tool,
}
else
{
/* stop the current tool drawing process */
gimp_draw_tool_pause (GIMP_DRAW_TOOL (tool));
/* Restore the previous transformation info */
for (i = 0; i < TRAN_INFO_SIZE; i++)
tr_tool->trans_info[i] = old_trans_info[i];
tr_tool->trans_info[i] = tr_tool->old_trans_info[i];
/* recalculate the tool's transformation matrix */
gimp_transform_tool_recalc (tr_tool, gdisp);
/* resume drawing the current tool */
gimp_draw_tool_resume (GIMP_DRAW_TOOL (tool));
/* Update the paths preview */
path_transform_current_path (gdisp->gimage,
tr_tool->transform, TRUE);
}
tool->state = INACTIVE;
}
static void
@ -520,9 +483,7 @@ gimp_transform_tool_motion (GimpTool *tool,
transform_tool = GIMP_TRANSFORM_TOOL (tool);
/* if we are creating or this tool is non-interactive, there is
* nothing to be done so exit.
*/
/* if we are creating, there is nothing to be done so exit. */
if (transform_tool->function == TRANSFORM_CREATING)
return;
@ -589,6 +550,9 @@ gimp_transform_tool_draw (GimpDrawTool *draw_tool)
tr_tool = GIMP_TRANSFORM_TOOL (draw_tool);
if (! tr_tool->use_grid)
return;
options = (TransformOptions *) GIMP_TOOL (draw_tool)->tool_info->tool_options;
/* draw the bounding box */
@ -611,11 +575,7 @@ gimp_transform_tool_draw (GimpDrawTool *draw_tool)
/* Draw the grid */
if ((tr_tool->grid_coords != NULL) &&
(tr_tool->tgrid_coords != NULL) /* FIXME!!! this doesn't belong here &&
((tool->type != PERSPECTIVE) ||
((tr_tool->transform[0][0] >=0.0) &&
(tr_tool->transform[1][1] >=0.0)) */ )
if ((tr_tool->grid_coords != NULL) && (tr_tool->tgrid_coords != NULL))
{
gci = 0;
k = tr_tool->ngx + tr_tool->ngy;
@ -763,7 +723,7 @@ gimp_transform_tool_doit (GimpTransformTool *tr_tool,
tu->tool_type = G_TYPE_FROM_INSTANCE (tool);
for (i = 0; i < TRAN_INFO_SIZE; i++)
tu->trans_info[i] = old_trans_info[i];
tu->trans_info[i] = tr_tool->old_trans_info[i];
tu->original = NULL;
tu->path_undo = pundo;
@ -789,8 +749,6 @@ gimp_transform_tool_doit (GimpTransformTool *tr_tool,
gdisplays_flush ();
gimp_transform_tool_reset (tr_tool, gdisp);
tool->state = INACTIVE;
}
TileManager *
@ -805,7 +763,8 @@ gimp_transform_tool_transform_tiles (GimpTransformTool *transform_tool,
g_return_val_if_fail (GIMP_IS_TRANSFORM_TOOL (transform_tool), NULL);
g_return_val_if_fail (progress_text != NULL, NULL);
gtk_widget_set_sensitive (GTK_WIDGET (transform_info->shell), FALSE);
if (transform_tool->info_dialog)
gtk_widget_set_sensitive (GTK_WIDGET (transform_tool->info_dialog), FALSE);
tool = GIMP_TOOL (transform_tool);
@ -873,7 +832,7 @@ gimp_transform_tool_transform_bounding_box (GimpTransformTool *tr_tool)
}
}
void
static void
gimp_transform_tool_reset (GimpTransformTool *tr_tool,
GimpDisplay *gdisp)
{
@ -889,8 +848,11 @@ gimp_transform_tool_reset (GimpTransformTool *tr_tool,
/* inactivate the tool */
tr_tool->function = TRANSFORM_CREATING;
gimp_draw_tool_stop (GIMP_DRAW_TOOL (tr_tool));
info_dialog_popdown (transform_info);
if (tr_tool->info_dialog)
info_dialog_popdown (tr_tool->info_dialog);
tool->state = INACTIVE;
tool->gdisp = NULL;
@ -939,6 +901,27 @@ gimp_transform_tool_bounds (GimpTransformTool *tr_tool,
}
}
void
gimp_transform_tool_info_dialog_connect (GimpTransformTool *tr_tool,
const gchar *ok_button)
{
g_return_if_fail (GIMP_IS_TRANSFORM_TOOL (tr_tool));
g_return_if_fail (ok_button != NULL);
if (tr_tool->info_dialog)
{
gimp_dialog_create_action_area (GIMP_DIALOG (tr_tool->info_dialog->shell),
ok_button, transform_ok_callback,
tr_tool, NULL, NULL, TRUE, FALSE,
_("Reset"), transform_reset_callback,
tr_tool, NULL, NULL, FALSE, FALSE,
NULL);
}
}
void
gimp_transform_tool_grid_density_changed (GimpTransformTool *transform_tool)
{
@ -1078,7 +1061,7 @@ transform_reset_callback (GtkWidget *widget,
/* Restore the previous transformation info */
for (i = 0; i < TRAN_INFO_SIZE; i++)
transform_tool->trans_info [i] = old_trans_info [i];
transform_tool->trans_info[i] = transform_tool->old_trans_info[i];
/* recalculate the tool's transformation matrix */
gimp_transform_tool_recalc (transform_tool, tool->gdisp);

View File

@ -49,44 +49,48 @@ struct _GimpTransformTool
{
GimpDrawTool parent_instance;
gint startx; /* starting x coord */
gint starty; /* starting y coord */
gint startx; /* starting x coord */
gint starty; /* starting y coord */
gint curx; /* current x coord */
gint cury; /* current y coord */
gint curx; /* current x coord */
gint cury; /* current y coord */
gint lastx; /* last x coord */
gint lasty; /* last y coord */
gint lastx; /* last x coord */
gint lasty; /* last y coord */
gint state; /* state of buttons and keys */
gint state; /* state of buttons and keys */
gint x1, y1; /* upper left hand coordinate */
gint x2, y2; /* lower right hand coords */
gint cx, cy; /* center point (for rotation) */
gint x1, y1; /* upper left hand coordinate */
gint x2, y2; /* lower right hand coords */
gint cx, cy; /* center point (for rotation) */
gdouble tx1, ty1; /* transformed coords */
gdouble tx2, ty2; /* */
gdouble tx3, ty3; /* */
gdouble tx4, ty4; /* */
gdouble tcx, tcy; /* */
gdouble tx1, ty1; /* transformed coords */
gdouble tx2, ty2;
gdouble tx3, ty3;
gdouble tx4, ty4;
gdouble tcx, tcy;
GimpMatrix3 transform; /* transformation matrix */
TransInfo trans_info; /* transformation info */
GimpMatrix3 transform; /* transformation matrix */
TransInfo trans_info; /* transformation info */
TileManager *original; /* pointer to original tiles */
TransInfo old_trans_info; /* for cancelling a drag operation */
TransformAction function; /* current tool activity */
TileManager *original; /* pointer to original tiles */
gboolean use_grid; /* does the tool use the grid */
TransformAction function; /* current tool activity */
gint ngx, ngy; /* number of grid lines in original
* x and y directions
*/
gdouble *grid_coords; /* x and y coordinates of the grid
* endpoints (a total of (ngx+ngy)*2
* coordinate pairs)
*/
gdouble *tgrid_coords; /* transformed grid_coords */
gboolean use_grid; /* does the tool use the grid */
gint ngx, ngy; /* number of grid lines in original
* x and y directions
*/
gdouble *grid_coords; /* x and y coordinates of the grid
* endpoints (a total of (ngx+ngy)*2
* coordinate pairs)
*/
gdouble *tgrid_coords; /* transformed grid_coords */
InfoDialog *info_dialog; /* transform info dialog */
};
struct _GimpTransformToolClass
@ -101,8 +105,6 @@ struct _GimpTransformToolClass
};
/* Special undo type */
typedef struct _TransformUndo TransformUndo;
struct _TransformUndo
@ -116,17 +118,15 @@ struct _TransformUndo
};
/* make this variable available to all */
/* Do we still need to do this? -- rock */
extern InfoDialog * transform_info;
GType gimp_transform_tool_get_type (void);
TileManager * gimp_transform_tool_transform_tiles (GimpTransformTool *tr_tool,
const gchar *progress_text);
void gimp_transform_tool_transform_bounding_box (GimpTransformTool *tr_tool);
void gimp_transform_tool_info_dialog_connect (GimpTransformTool *tr_tool,
const gchar *ok_button);
void gimp_transform_tool_grid_density_changed (GimpTransformTool *tr_tool);
void gimp_transform_tool_show_path_changed (GimpTransformTool *tr_tool,
gint type);

View File

@ -777,7 +777,7 @@ paint_options_paint_mode_update (GtkWidget *widget,
PaintOptions *options;
paint_mode =
(LayerModeEffects) g_object_get_data (G_OBJECT (widget), "user_data");
(LayerModeEffects) g_object_get_data (G_OBJECT (widget), "gimp-item-data");
options = (PaintOptions *) data;

View File

@ -125,8 +125,7 @@ selection_options_init (SelectionOptions *options,
{
options->op_w[i] = gtk_radio_button_new (group);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (options->op_w[i]));
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (options->op_w[i]),
FALSE);
gtk_toggle_button_set_mode (GTK_TOGGLE_BUTTON (options->op_w[i]), FALSE);
gtk_box_pack_start (GTK_BOX (hbox), options->op_w[i], FALSE, FALSE, 0);
gtk_widget_show (options->op_w[i]);
@ -141,7 +140,7 @@ selection_options_init (SelectionOptions *options,
TRUE);
}
g_object_set_data (G_OBJECT (options->op_w[i]), "user_data",
g_object_set_data (G_OBJECT (options->op_w[i]), "gimp-item-data",
GINT_TO_POINTER (select_op_entries[i].op));
g_signal_connect (G_OBJECT (options->op_w[i]), "toggled",
G_CALLBACK (gimp_radio_button_update),
@ -432,6 +431,12 @@ selection_options_reset (GimpToolOptions *tool_options)
options = (SelectionOptions *) tool_options;
if (options->op_w[0])
{
gimp_radio_group_set_active (GTK_RADIO_BUTTON (options->op_w[0]),
GINT_TO_POINTER (options->op_d));
}
if (options->feather_w)
{
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (options->feather_w),

View File

@ -386,7 +386,8 @@ gimp_layer_list_view_paint_mode_menu_callback (GtkWidget *widget,
LayerModeEffects mode;
mode = (LayerModeEffects)
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "user_data"));
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"gimp-item-data"));
if (gimp_layer_get_mode (layer) != mode)
{

View File

@ -386,7 +386,8 @@ gimp_layer_list_view_paint_mode_menu_callback (GtkWidget *widget,
LayerModeEffects mode;
mode = (LayerModeEffects)
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget), "user_data"));
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"gimp-item-data"));
if (gimp_layer_get_mode (layer) != mode)
{

View File

@ -59,7 +59,7 @@ gimp_option_menu_new (gboolean menu_only,
* const gchar *label,
* GCallback callback,
* gpointer callback_data,
* gpointer user_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
* gboolean active
*/
@ -73,7 +73,7 @@ gimp_option_menu_new (gboolean menu_only,
const gchar *label;
GCallback callback;
gpointer callback_data;
gpointer user_data;
gpointer item_data;
GtkWidget **widget_ptr;
gboolean active;
@ -93,7 +93,7 @@ gimp_option_menu_new (gboolean menu_only,
{
callback = va_arg (args, GCallback);
callback_data = va_arg (args, gpointer);
user_data = va_arg (args, gpointer);
item_data = va_arg (args, gpointer);
widget_ptr = va_arg (args, GtkWidget **);
active = va_arg (args, gboolean);
@ -105,8 +105,14 @@ gimp_option_menu_new (gboolean menu_only,
callback,
callback_data);
if (user_data)
g_object_set_data (G_OBJECT (menuitem), "user_data", user_data);
if (item_data)
{
g_object_set_data (G_OBJECT (menuitem), "gimp-item-data",
item_data);
/* backward compat */
g_object_set_data (G_OBJECT (menuitem), "user_data", item_data);
}
}
else
{
@ -152,7 +158,7 @@ gimp_option_menu_new (gboolean menu_only,
* @menu_item_callback: The callback each menu item's "activate" signal will
* be connected with.
* @callback_data: The data which will be passed to g_signal_connect().
* @initial: The @user_data of the initially selected menu item.
* @initial: The @item_data of the initially selected menu item.
* @...: A #NULL terminated @va_list describing the menu items.
*
* Returns: A #GtkOptionMenu or a #GtkMenu (depending on @menu_only).
@ -161,11 +167,11 @@ GtkWidget *
gimp_option_menu_new2 (gboolean menu_only,
GCallback menu_item_callback,
gpointer callback_data,
gpointer initial, /* user_data */
gpointer initial, /* item_data */
/* specify menu items as va_list:
* const gchar *label,
* gpointer user_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
*/
@ -176,7 +182,7 @@ gimp_option_menu_new2 (gboolean menu_only,
/* menu item variables */
const gchar *label;
gpointer user_data;
gpointer item_data;
GtkWidget **widget_ptr;
va_list args;
@ -193,7 +199,7 @@ gimp_option_menu_new2 (gboolean menu_only,
for (i = 0; label; i++)
{
user_data = va_arg (args, gpointer);
item_data = va_arg (args, gpointer);
widget_ptr = va_arg (args, GtkWidget **);
if (strcmp (label, "---"))
@ -204,8 +210,14 @@ gimp_option_menu_new2 (gboolean menu_only,
menu_item_callback,
callback_data);
if (user_data)
g_object_set_data (G_OBJECT (menuitem), "user_data", user_data);
if (item_data)
{
g_object_set_data (G_OBJECT (menuitem), "gimp-item-data",
item_data);
/* backward compat */
g_object_set_data (G_OBJECT (menuitem), "user_data", item_data);
}
}
else
{
@ -222,7 +234,7 @@ gimp_option_menu_new2 (gboolean menu_only,
gtk_widget_show (menuitem);
/* remember the initial menu item */
if (user_data == initial)
if (item_data == initial)
initial_index = i;
label = va_arg (args, const gchar *);
@ -249,17 +261,16 @@ gimp_option_menu_new2 (gboolean menu_only,
* gimp_option_menu_set_history:
* @option_menu: A #GtkOptionMenu as returned by gimp_option_menu_new() or
* gimp_option_menu_new2().
* @user_data: The @user_data of the menu item you want to select.
* @item_data: The @item_data of the menu item you want to select.
**/
void
gimp_option_menu_set_history (GtkOptionMenu *option_menu,
gpointer user_data)
gpointer item_data)
{
GtkWidget *menu_item;
GList *list;
gint history = 0;
g_return_if_fail (option_menu);
g_return_if_fail (GTK_IS_OPTION_MENU (option_menu));
for (list = GTK_MENU_SHELL (option_menu->menu)->children;
@ -269,7 +280,8 @@ gimp_option_menu_set_history (GtkOptionMenu *option_menu,
menu_item = GTK_WIDGET (list->data);
if (GTK_IS_LABEL (GTK_BIN (menu_item)->child) &&
g_object_get_data (G_OBJECT (menu_item), "user_data") == user_data)
g_object_get_data (G_OBJECT (menu_item),
"gimp-item-data") == item_data)
{
break;
}
@ -297,7 +309,7 @@ gimp_radio_group_new (gboolean in_frame,
* const gchar *label,
* GCallback callback,
* gpointer callback_data,
* gpointer user_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
* gboolean active,
*/
@ -312,7 +324,7 @@ gimp_radio_group_new (gboolean in_frame,
const gchar *label;
GCallback callback;
gpointer callback_data;
gpointer user_data;
gpointer item_data;
GtkWidget **widget_ptr;
gboolean active;
@ -329,7 +341,7 @@ gimp_radio_group_new (gboolean in_frame,
{
callback = va_arg (args, GCallback);
callback_data = va_arg (args, gpointer);
user_data = va_arg (args, gpointer);
item_data = va_arg (args, gpointer);
widget_ptr = va_arg (args, GtkWidget **);
active = va_arg (args, gboolean);
@ -341,8 +353,13 @@ gimp_radio_group_new (gboolean in_frame,
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
if (user_data)
g_object_set_data (G_OBJECT (button), "user_data", user_data);
if (item_data)
{
g_object_set_data (G_OBJECT (button), "gimp-item-data", item_data);
/* backward compatibility */
g_object_set_data (G_OBJECT (button), "user_data", item_data);
}
if (widget_ptr)
*widget_ptr = button;
@ -386,7 +403,7 @@ gimp_radio_group_new (gboolean in_frame,
* be connected with.
* @callback_data: The data which will be passed to
* g_signal_connect().
* @initial: The @user_data of the initially pressed radio button.
* @initial: The @item_data of the initially pressed radio button.
* @...: A #NULL terminated @va_list describing
* the radio buttons.
*
@ -397,11 +414,11 @@ gimp_radio_group_new2 (gboolean in_frame,
const gchar *frame_title,
GCallback radio_button_callback,
gpointer callback_data,
gpointer initial, /* user_data */
gpointer initial, /* item_data */
/* specify radio buttons as va_list:
* const gchar *label,
* gpointer user_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
*/
@ -413,7 +430,7 @@ gimp_radio_group_new2 (gboolean in_frame,
/* radio button variables */
const gchar *label;
gpointer user_data;
gpointer item_data;
GtkWidget **widget_ptr;
va_list args;
@ -428,7 +445,7 @@ gimp_radio_group_new2 (gboolean in_frame,
while (label)
{
user_data = va_arg (args, gpointer);
item_data = va_arg (args, gpointer);
widget_ptr = va_arg (args, GtkWidget **);
if (label != (gpointer) 1)
@ -439,13 +456,18 @@ gimp_radio_group_new2 (gboolean in_frame,
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
if (user_data)
g_object_set_data (G_OBJECT (button), "user_data", user_data);
if (item_data)
{
g_object_set_data (G_OBJECT (button), "gimp-item-data", item_data);
/* backward compatibility */
g_object_set_data (G_OBJECT (button), "user_data", item_data);
}
if (widget_ptr)
*widget_ptr = button;
if (initial == user_data)
if (initial == item_data)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
g_signal_connect (G_OBJECT (button), "toggled",
@ -474,6 +496,29 @@ gimp_radio_group_new2 (gboolean in_frame,
return vbox;
}
void
gimp_radio_group_set_active (GtkRadioButton *radio_button,
gpointer item_data)
{
GtkWidget *button;
GSList *group;
g_return_if_fail (GTK_IS_RADIO_BUTTON (radio_button));
for (group = gtk_radio_button_get_group (radio_button);
group;
group = g_slist_next (group))
{
button = GTK_WIDGET (group->data);
if (g_object_get_data (G_OBJECT (button), "gimp-item-data") == item_data)
{
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
return;
}
}
}
/**
* gimp_spin_button_new:
* @adjustment: Returns the spinbutton's #GtkAdjustment.
@ -992,8 +1037,8 @@ gimp_mem_size_unit_callback (GtkWidget *widget,
gmsed = (GimpMemSizeEntryData *)data;
new_unit =
GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget), "user_data"));
new_unit = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (widget),
"gimp-item-data"));
if (new_unit && new_unit != gmsed->mem_size_unit)
{
@ -1198,7 +1243,7 @@ gimp_toggle_button_update (GtkWidget *widget,
* gimp_radio_button_update:
* @widget: A #GtkRadioButton.
* @data: A pointer to a #gint variable which will store the value of
* GPOINTER_TO_INT (g_object_get_user_data(object, "user_data")).
* GPOINTER_TO_INT (g_object_get_user_data(@widget, "gimp-item-data")).
*
* Note that this function calls gimp_toggle_button_sensitive_update().
**/
@ -1213,7 +1258,7 @@ gimp_radio_button_update (GtkWidget *widget,
toggle_val = (gint *) data;
*toggle_val = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"user_data"));
"gimp-item-data"));
}
gimp_toggle_button_sensitive_update (GTK_TOGGLE_BUTTON (widget));
@ -1223,7 +1268,7 @@ gimp_radio_button_update (GtkWidget *widget,
* gimp_menu_item_update:
* @widget: A #GtkMenuItem.
* @data: A pointer to a #gint variable which will store the value of
* GPOINTER_TO_INT (g_object_get_data(object, "user_data")).
* GPOINTER_TO_INT (g_object_get_data(@widget, "gimp-item-data")).
**/
void
gimp_menu_item_update (GtkWidget *widget,
@ -1234,7 +1279,7 @@ gimp_menu_item_update (GtkWidget *widget,
item_val = (gint *) data;
*item_val = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (widget),
"user_data"));
"gimp-item-data"));
}
/**

View File

@ -42,9 +42,7 @@
#include <libgimpwidgets/gimpunitmenu.h>
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
G_BEGIN_DECLS
/* For information look into the C source or the html documentation */
@ -57,8 +55,8 @@ GtkWidget * gimp_option_menu_new (gboolean menu_only,
/* specify menu items as va_list:
* gchar *label,
* GCallback callback,
* gpointer data,
* gpointer user_data,
* gpointer callback_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
* gboolean active
*/
@ -67,19 +65,19 @@ GtkWidget * gimp_option_menu_new (gboolean menu_only,
GtkWidget * gimp_option_menu_new2 (gboolean menu_only,
GCallback menu_item_callback,
gpointer data,
gpointer initial, /* user_data */
gpointer menu_item_callback_data,
gpointer initial, /* item_data */
/* specify menu items as va_list:
* gchar *label,
* gpointer user_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
*/
...);
void gimp_option_menu_set_history (GtkOptionMenu *option_menu,
gpointer user_data);
gpointer item_data);
GtkWidget * gimp_radio_group_new (gboolean in_frame,
const gchar *frame_title,
@ -87,8 +85,8 @@ GtkWidget * gimp_radio_group_new (gboolean in_frame,
/* specify radio buttons as va_list:
* const gchar *label,
* GCallback callback,
* gpointer data,
* gpointer user_data,
* gpointer callback_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
* gboolean active,
*/
@ -98,17 +96,20 @@ GtkWidget * gimp_radio_group_new (gboolean in_frame,
GtkWidget * gimp_radio_group_new2 (gboolean in_frame,
const gchar *frame_title,
GCallback radio_button_callback,
gpointer data,
gpointer initial, /* user_data */
gpointer radio_button_callback_data,
gpointer initial, /* item_data */
/* specify radio buttons as va_list:
* const gchar *label,
* gpointer user_data,
* gpointer item_data,
* GtkWidget **widget_ptr,
*/
...);
void gimp_radio_group_set_active (GtkRadioButton *radio_button,
gpointer item_data);
GtkWidget * gimp_spin_button_new (/* return value: */
GtkObject **adjustment,
@ -122,19 +123,19 @@ GtkWidget * gimp_spin_button_new (/* return value: */
guint digits);
#define GIMP_SCALE_ENTRY_LABEL(adj) \
GTK_LABEL (gtk_object_get_data (GTK_OBJECT(adj), "label"))
GTK_LABEL (g_object_get_data (G_OBJECT (adj), "label"))
#define GIMP_SCALE_ENTRY_SCALE(adj) \
GTK_HSCALE (gtk_object_get_data (GTK_OBJECT(adj), "scale"))
GTK_HSCALE (g_object_get_data (G_OBJECT (adj), "scale"))
#define GIMP_SCALE_ENTRY_SCALE_ADJ(adj) \
gtk_range_get_adjustment \
(GTK_RANGE (gtk_object_get_data (GTK_OBJECT (adj), "scale")))
(GTK_RANGE (g_object_get_data (G_OBJECT (adj), "scale")))
#define GIMP_SCALE_ENTRY_SPINBUTTON(adj) \
GTK_SPIN_BUTTON (gtk_object_get_data (GTK_OBJECT (adj), "spinbutton"))
GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (adj), "spinbutton"))
#define GIMP_SCALE_ENTRY_SPINBUTTON_ADJ(adj) \
gtk_spin_button_get_adjustment \
(GTK_SPIN_BUTTON (gtk_object_get_data (GTK_OBJECT (adj), "spinbutton")))
(GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (adj), "spinbutton")))
GtkObject * gimp_scale_entry_new (GtkTable *table,
gint column,
@ -155,14 +156,13 @@ GtkObject * gimp_scale_entry_new (GtkTable *table,
const gchar *help_data);
#define GIMP_RANDOM_SEED_SPINBUTTON(hbox) \
GTK_SPIN_BUTTON (gtk_object_get_data (GTK_OBJECT( hbox), "spinbutton"))
GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (hbox), "spinbutton"))
#define GIMP_RANDOM_SEED_SPINBUTTON_ADJ(hbox) \
gtk_spin_button_get_adjustment \
(GTK_SPIN_BUTTON (gtk_object_get_data (GTK_OBJECT (hbox), "spinbutton")))
(GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (hbox), "spinbutton")))
#define GIMP_RANDOM_SEED_TOGGLEBUTTON(hbox) \
GTK_TOGGLE_BUTTON (gtk_object_get_data (GTK_OBJECT (hbox), \
"togglebutton"))
GTK_TOGGLE_BUTTON (g_object_get_data (G_OBJECT (hbox), "togglebutton"))
GtkWidget * gimp_random_seed_new (gint *seed,
gint *use_time,
@ -200,15 +200,12 @@ GtkWidget * gimp_coordinates_new (GimpUnit unit,
gdouble ysize_100 /* % */);
#define GIMP_MEM_SIZE_ENTRY_SPINBUTTON(memsize) \
GTK_SPIN_BUTTON (gtk_object_get_data (GTK_OBJECT (memsize), \
"spinbutton"))
GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (memsize), "spinbutton"))
#define GIMP_MEM_SIZE_ENTRY_SPINBUTTON_ADJ(memsize) \
gtk_spin_button_get_adjustment \
(GTK_SPIN_BUTTON (gtk_object_get_data (GTK_OBJECT (memsize), \
"spinbutton")))
(GTK_SPIN_BUTTON (g_object_get_data (G_OBJECT (memsize), "spinbutton")))
#define GIMP_MEM_SIZE_ENTRY_OPTIONMENU(memsize) \
GTK_OPTION_MENU (gtk_object_get_data (GTK_OBJECT (memsize), \
"optionmenu"))
GTK_OPTION_MENU (g_object_get_data (G_OBJECT (memsize), "optionmenu"))
GtkWidget * gimp_mem_size_entry_new (GtkAdjustment *adjustment);
@ -262,8 +259,6 @@ void gimp_table_attach_aligned (GtkTable *table,
gboolean left_align);
#ifdef __cplusplus
}
#endif /* __cplusplus */
G_END_DECLS
#endif /* __GIMP_WIDGETS_H__ */