mirror of https://github.com/GNOME/gimp.git
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:
parent
2a33106bd3
commit
a08f3ac001
41
ChangeLog
41
ChangeLog
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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 ();
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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),
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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__ */
|
||||
|
|
Loading…
Reference in New Issue