More work on adding mnemonics (#80804) and fixed #81014

This commit is contained in:
Maurits Rijk
2002-05-31 11:39:27 +00:00
parent 3d2fa9a54b
commit 678aae0c82
7 changed files with 155 additions and 87 deletions

View File

@ -1,3 +1,13 @@
2002-05-31 Maurits Rijk <lpeek.mrijk@consunet.nl>
* plug-ins/common/checkerboard.c: applied patch from Jeroen Lamain
<roccodevinger@yahoo.com> to fix #81014 (Use size entry widget in Checkerboard plugin).
2002-05-30 Maurits Rijk <lpeek.mrijk@consunet.nl>
* plug-ins/common/displace.c (displace_dialog)
* plug-ins/common/illusion.c (dialog): enable mnemonics
2002-05-30 Sven Neumann <sven@gimp.org>
* Made 1.3.7 release.
@ -85,6 +95,14 @@
* app/config/gimpconfig-deserialize.c
(gimp_config_deserialize_memsize): use gimp_memsize_set_from_string().
2002-05-28 Maurits Rijk <lpeek.mrijk@consunet.nl>
* plug-ins/gflare/gflare.c: enable mnemonics.
* plug-ins/common/plasma.c (plasma_dialog)
* plug-ins/common/snoise.c (solid_noise_dialog): enable mnemonics on
Random Seed widget.
2002-05-28 Sven Neumann <sven@gimp.org>
* app/core/gimplayer.c (gimp_layer_new_from_drawable): determine

View File

@ -29,11 +29,13 @@
#include "libgimp/stdplugins-intl.h"
#define SPIN_BUTTON_WIDTH 75
/* Variables set in dialog box */
typedef struct data
{
gint mode;
gint size;
gint mode;
gint size;
} CheckVals;
typedef struct
@ -53,14 +55,17 @@ static void run (gchar *name,
gint *nreturn_vals,
GimpParam **return_vals);
static void check (GimpDrawable *drawable);
static void do_checkerboard_pattern (GimpDrawable *drawable);
static gint inblock (gint pos,
gint size);
static gboolean check_dialog (void);
static gboolean do_checkerboard_dialog (gint32 image_ID,
GimpDrawable *drawable);
static void check_ok_callback (GtkWidget *widget,
gpointer data);
static void check_size_update_callback(GtkWidget * widget, gpointer data);
GimpPlugInInfo PLUG_IN_INFO =
{
NULL, /* init_proc */
@ -111,12 +116,14 @@ run (gchar *name,
{
static GimpParam values[1];
GimpDrawable *drawable;
gint32 image_ID;
GimpRunMode run_mode;
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
INIT_I18N_UI();
run_mode = param[0].data.d_int32;
image_ID = param[1].data.d_int32;
*nreturn_vals = 1;
*return_vals = values;
@ -130,7 +137,7 @@ run (gchar *name,
{
case GIMP_RUN_INTERACTIVE:
gimp_get_data ("plug_in_checkerboard", &cvals);
if (! check_dialog())
if (! do_checkerboard_dialog(image_ID, drawable))
{
gimp_drawable_detach (drawable);
return;
@ -160,7 +167,7 @@ run (gchar *name,
{
gimp_progress_init (_("Adding Checkerboard..."));
check (drawable);
do_checkerboard_pattern(drawable);
if (run_mode != GIMP_RUN_NONINTERACTIVE)
gimp_displays_flush ();
@ -180,7 +187,7 @@ run (gchar *name,
static void
check (GimpDrawable *drawable)
do_checkerboard_pattern (GimpDrawable *drawable)
{
GimpPixelRgn dest_rgn;
guchar *dest_row;
@ -229,6 +236,13 @@ check (GimpDrawable *drawable)
break;
}
if (cvals.size == 0)
{
/* make size 1 to prevent division by zero */
cvals.size = 1;
}
for (pr = gimp_pixel_rgns_register (1, &dest_rgn);
pr != NULL;
pr = gimp_pixel_rgns_process (pr))
@ -287,7 +301,7 @@ inblock (gint pos,
gint size)
{
static gint *in = NULL; /* initialized first time */
gint i,j,k, len;
gint len;
/* avoid a FP exception */
if (size == 1)
@ -300,36 +314,32 @@ inblock (gint pos,
*/
if (in == NULL)
{
gint cell = 1; /* cell value */
gint i, j, k;
in = g_new (gint, len);
if (in == NULL)
{
return 0;
/*
* i is absolute index into in[]
* j is current number of blocks to fill in with a 1 or 0.
* k is just counter for the j cells.
*/
i=0;
for (j=1; j<=size; j++ )
{ /* first half */
for (k=0; k<j; k++ )
{
in[i++] = cell;
}
cell = !cell;
}
else
{
int cell = 1; /* cell value */
/*
* i is absolute index into in[]
* j is current number of blocks to fill in with a 1 or 0.
* k is just counter for the j cells.
*/
i=0;
for (j=1; j<=size; j++ )
{ /* first half */
for (k=0; k<j; k++ )
{
in[i++] = cell;
}
cell = !cell;
}
for ( j=size-1; j>=1; j--)
{ /* second half */
for (k=0; k<j; k++ )
{
in[i++] = cell;
}
cell = !cell;
for ( j=size-1; j>=1; j--)
{ /* second half */
for (k=0; k<j; k++ )
{
in[i++] = cell;
}
cell = !cell;
}
}
@ -338,14 +348,18 @@ inblock (gint pos,
}
static gboolean
check_dialog (void)
do_checkerboard_dialog (gint32 image_ID,
GimpDrawable *drawable)
{
GtkWidget *dlg;
GtkWidget *frame;
GtkWidget *vbox;
GtkWidget *toggle;
GtkWidget *table;
GtkObject *size_data;
GtkWidget *size_entry;
gint size, width, height;
GimpUnit unit;
gdouble xres;
gdouble yres;
gimp_ui_init ("checkerboard", FALSE);
@ -365,6 +379,10 @@ check_dialog (void)
G_CALLBACK (gtk_main_quit),
NULL);
/* Get the image resolution and unit */
gimp_image_get_resolution (image_ID, &xres, &yres);
unit = gimp_image_get_unit (image_ID);
/* parameter settings */
frame = gtk_frame_new (_("Parameter Settings"));
gtk_frame_set_shadow_type (GTK_FRAME (frame), GTK_SHADOW_ETCHED_IN);
@ -384,20 +402,40 @@ check_dialog (void)
G_CALLBACK (gimp_toggle_button_update),
&cvals.mode);
table = gtk_table_new (1, 3, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (table), 4);
gtk_box_pack_start (GTK_BOX (vbox), table, FALSE, FALSE, 0);
gtk_widget_show (table);
size_entry = gimp_size_entry_new(1, unit, "%a", TRUE, TRUE, FALSE,
SPIN_BUTTON_WIDTH, GIMP_SIZE_ENTRY_UPDATE_SIZE);
size_data = gimp_scale_entry_new (GTK_TABLE (table), 0, 0,
_("Check _Size:"), 200, 0,
cvals.size, 1, 400, 1, 10, 0,
TRUE, 0, 0,
NULL, NULL);
g_signal_connect (G_OBJECT (size_data), "value_changed",
G_CALLBACK (gimp_int_adjustment_update),
/* set the unit back to pixels, since most times we will want pixels */
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (size_entry), GIMP_UNIT_PIXEL);
width = gimp_drawable_width (drawable->drawable_id);
height = gimp_drawable_height (drawable->drawable_id);
size = MIN (width, height);
/* set the resolution to the image resolution */
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (size_entry), 0, xres, TRUE);
/* set the size (in pixels) that will be treated as 0% and 100% */
gimp_size_entry_set_size (GIMP_SIZE_ENTRY (size_entry), 0, 0.0, (gdouble) size);
/* set upper and lower limits (in pixels) */
gimp_size_entry_set_refval_boundaries (GIMP_SIZE_ENTRY (size_entry), 0, 1.0, size);
gtk_table_set_col_spacing (GTK_TABLE (size_entry), 0, 4);
gtk_table_set_col_spacing (GTK_TABLE (size_entry), 2, 12);
/* initialize the values */
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (size_entry), 0, (gdouble) cvals.size);
/* attach labels */
gimp_size_entry_attach_label (GIMP_SIZE_ENTRY (size_entry), _("_Size:"), 1, 0, 0.0);
g_signal_connect (G_OBJECT (size_entry), "value_changed",
G_CALLBACK (check_size_update_callback),
&cvals.size);
gtk_container_add (GTK_CONTAINER (vbox), size_entry);
gtk_widget_show (size_entry);
gtk_widget_show (vbox);
gtk_widget_show (frame);
gtk_widget_show (dlg);
@ -408,6 +446,13 @@ check_dialog (void)
return cint.run;
}
static void
check_size_update_callback(GtkWidget * widget, gpointer data)
{
cvals.size = gimp_size_entry_get_refval (GIMP_SIZE_ENTRY (widget), 0);
}
static void
check_ok_callback (GtkWidget *widget,
gpointer data)

View File

@ -320,7 +320,7 @@ displace_dialog (GimpDrawable *drawable)
gtk_container_add (GTK_CONTAINER (frame), table);
/* X options */
toggle = gtk_check_button_new_with_label (_("X Displacement:"));
toggle = gtk_check_button_new_with_mnemonic (_("_X Displacement:"));
gtk_table_attach (GTK_TABLE (table), toggle, 0, 1, 0, 1,
GTK_FILL, GTK_FILL, 0, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dvals.do_x);
@ -357,7 +357,7 @@ displace_dialog (GimpDrawable *drawable)
gtk_widget_show (option_menu);
/* Y Options */
toggle = gtk_check_button_new_with_label (_("Y Displacement:"));
toggle = gtk_check_button_new_with_mnemonic (_("_Y Displacement:"));
gtk_table_attach (GTK_TABLE (table), toggle, 0, 1, 1, 2,
GTK_FILL, GTK_FILL, 0, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), dvals.do_y);
@ -406,7 +406,7 @@ displace_dialog (GimpDrawable *drawable)
gtk_box_pack_start (GTK_BOX (toggle_hbox), label, FALSE, FALSE, 0);
gtk_widget_show (label);
toggle = gtk_radio_button_new_with_label (group, _("Wrap"));
toggle = gtk_radio_button_new_with_mnemonic (group, _("_Wrap"));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (toggle));
gtk_box_pack_start (GTK_BOX (toggle_hbox), toggle, FALSE, FALSE, 0);
gtk_widget_show (toggle);
@ -420,7 +420,7 @@ displace_dialog (GimpDrawable *drawable)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
dvals.displace_type == WRAP);
toggle = gtk_radio_button_new_with_label (group, _("Smear"));
toggle = gtk_radio_button_new_with_mnemonic (group, _("_Smear"));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (toggle));
gtk_box_pack_start (GTK_BOX (toggle_hbox), toggle, FALSE, FALSE, 0);
gtk_widget_show (toggle);
@ -434,7 +434,7 @@ displace_dialog (GimpDrawable *drawable)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle),
dvals.displace_type == SMEAR);
toggle = gtk_radio_button_new_with_label (group, _("Black"));
toggle = gtk_radio_button_new_with_mnemonic (group, _("_Black"));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (toggle));
gtk_box_pack_start (GTK_BOX (toggle_hbox), toggle, FALSE, FALSE, 0);
gtk_widget_show (toggle);

View File

@ -628,7 +628,7 @@ dialog (GimpDrawable *mangle)
spinbutton = gimp_spin_button_new (&adj, parameters.division,
-32, 64, 1, 10, 0, 1, 0);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("Division:"), 1.0, 0.5,
_("_Division:"), 1.0, 0.5,
spinbutton, 1, TRUE);
g_signal_connect (G_OBJECT (adj), "value_changed",
@ -638,7 +638,7 @@ dialog (GimpDrawable *mangle)
G_CALLBACK (filter_preview),
NULL);
radio = gtk_radio_button_new_with_label (group, _("Mode 1"));
radio = gtk_radio_button_new_with_mnemonic (group, _("Mode _1"));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio));
gtk_table_attach (GTK_TABLE (table), radio, 0, 2, 1, 2,
GTK_FILL, GTK_FILL, 0, 0);
@ -653,7 +653,7 @@ dialog (GimpDrawable *mangle)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (radio), parameters.type1);
radio = gtk_radio_button_new_with_label (group, _("Mode 2"));
radio = gtk_radio_button_new_with_mnemonic (group, _("Mode _2"));
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (radio));
gtk_table_attach (GTK_TABLE (table), radio, 0, 2, 2, 3,
GTK_FILL, GTK_FILL, 0, 0);

View File

@ -309,6 +309,7 @@ plasma_dialog (GimpDrawable *drawable, GimpImageType drawable_type)
GtkWidget *main_vbox;
GtkWidget *abox;
GtkWidget *frame;
GtkWidget *label;
GtkWidget *table;
GtkWidget *seed;
GtkObject *adj;
@ -375,9 +376,12 @@ plasma_dialog (GimpDrawable *drawable, GimpImageType drawable_type)
seed = gimp_random_seed_new (&pvals.seed,
&pvals.timeseed,
TRUE, FALSE);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("_Random Seed:"), 1.0, 0.5,
seed, 1, TRUE);
label = gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("_Random Seed:"), 1.0, 0.5,
seed, 1, TRUE);
gtk_label_set_mnemonic_widget (GTK_LABEL (label),
GIMP_RANDOM_SEED_SPINBUTTON (seed));
g_signal_connect_swapped (G_OBJECT (GIMP_RANDOM_SEED_SPINBUTTON_ADJ (seed)),
"value_changed",
G_CALLBACK (plasma_seed_changed_callback),

View File

@ -499,6 +499,7 @@ solid_noise_dialog (void)
GtkWidget *frame;
GtkWidget *toggle;
GtkWidget *table;
GtkWidget *label;
GtkWidget *seed_hbox;
GtkWidget *spinbutton;
GtkObject *adj;
@ -540,9 +541,11 @@ solid_noise_dialog (void)
seed_hbox = gimp_random_seed_new (&snvals.seed,
&snvals.timeseed,
TRUE, FALSE);
gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("_Random Seed:"), 1.0, 0.5,
seed_hbox, 1, TRUE);
label = gimp_table_attach_aligned (GTK_TABLE (table), 0, 0,
_("_Random Seed:"), 1.0, 0.5,
seed_hbox, 1, TRUE);
gtk_label_set_mnemonic_widget (GTK_LABEL (label),
GIMP_RANDOM_SEED_SPINBUTTON (seed_hbox));
/* Detail */
spinbutton = gimp_spin_button_new (&adj, snvals.detail,
@ -555,7 +558,7 @@ solid_noise_dialog (void)
&snvals.detail);
/* Turbulent */
toggle = gtk_check_button_new_with_label ( _("T_urbulent"));
toggle = gtk_check_button_new_with_mnemonic ( _("T_urbulent"));
gtk_table_attach (GTK_TABLE (table), toggle, 2, 3, 0, 1,
GTK_SHRINK | GTK_FILL, GTK_FILL, 1, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), snvals.turbulent);
@ -566,7 +569,7 @@ solid_noise_dialog (void)
&snvals.turbulent);
/* Tilable */
toggle = gtk_check_button_new_with_label ( _("T_ilable"));
toggle = gtk_check_button_new_with_mnemonic ( _("T_ilable"));
gtk_table_attach (GTK_TABLE (table), toggle, 2, 3, 1, 2,
GTK_SHRINK | GTK_FILL, GTK_FILL, 1, 0);
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), snvals.tilable);

View File

@ -1387,10 +1387,8 @@ gflare_free (GFlare *gflare)
{
g_assert (gflare != NULL);
if (gflare->name)
g_free (gflare->name);
if (gflare->filename)
g_free (gflare->filename);
g_free (gflare->name);
g_free (gflare->filename);
g_free (gflare);
}
@ -2944,11 +2942,11 @@ dlg_make_page_settings (GFlareDialog *dlg,
FALSE, FALSE,
_("X:"), pvals.xcenter, xres,
_("_X:"), pvals.xcenter, xres,
-GIMP_MAX_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE,
0, gimp_drawable_width (drawable->drawable_id),
_("Y:"), pvals.ycenter, yres,
_("_Y:"), pvals.ycenter, yres,
-GIMP_MAX_IMAGE_SIZE, GIMP_MAX_IMAGE_SIZE,
0, gimp_drawable_height (drawable->drawable_id));
@ -2979,7 +2977,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
row = 0;
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, row++,
_("Radius:"), SCALE_WIDTH, 0,
_("_Radius:"), SCALE_WIDTH, 0,
pvals.radius, 0.0, drawable->width / 2,
1.0, 10.0, 1,
FALSE, 0.0, GIMP_MAX_IMAGE_SIZE,
@ -2992,7 +2990,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
NULL);
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, row++,
_("Rotation:"), SCALE_WIDTH, 0,
_("Ro_tation:"), SCALE_WIDTH, 0,
pvals.rotation, -180.0, 180.0, 1.0, 15.0, 1,
TRUE, 0, 0,
NULL, NULL);
@ -3004,7 +3002,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
NULL);
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, row++,
_("Hue Rotation:"), SCALE_WIDTH, 0,
_("_Hue Rotation:"), SCALE_WIDTH, 0,
pvals.hue, -180.0, 180.0, 1.0, 15.0, 1,
TRUE, 0, 0,
NULL, NULL);
@ -3016,7 +3014,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
NULL);
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, row++,
_("Vector Angle:"), SCALE_WIDTH, 0,
_("Vector _Angle:"), SCALE_WIDTH, 0,
pvals.vangle, 0.0, 359.0, 1.0, 15.0, 1,
TRUE, 0, 0,
NULL, NULL);
@ -3028,7 +3026,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
NULL);
adj = gimp_scale_entry_new (GTK_TABLE (table), 0, row++,
_("Vector Length:"), SCALE_WIDTH, 0,
_("Vector _Length:"), SCALE_WIDTH, 0,
pvals.vlength, 1, 1000, 1.0, 10.0, 1,
FALSE, 1, GIMP_MAX_IMAGE_SIZE,
NULL, NULL);
@ -3054,7 +3052,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
gtk_container_add (GTK_CONTAINER (frame), vbox);
gtk_widget_show (vbox);
button = gtk_check_button_new_with_label (_("Adaptive Supersampling"));
button = gtk_check_button_new_with_mnemonic (_("A_daptive Supersampling"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button),
pvals.use_asupsample);
gtk_box_pack_start (GTK_BOX (vbox), button, FALSE, FALSE, 0);
@ -3080,7 +3078,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
GTK_SIGNAL_FUNC (gimp_int_adjustment_update),
&pvals.asupsample_max_depth);
gimp_table_attach_aligned (GTK_TABLE (asup_table), 0, 0,
_("Max Depth:"), 1.0, 1.0,
_("_Max Depth:"), 1.0, 1.0,
scale, 1, FALSE);
adj = gtk_adjustment_new (pvals.asupsample_threshold,
@ -3092,12 +3090,12 @@ dlg_make_page_settings (GFlareDialog *dlg,
GTK_SIGNAL_FUNC (gimp_double_adjustment_update),
&pvals.asupsample_threshold);
gimp_table_attach_aligned (GTK_TABLE (asup_table), 0, 1,
_("Threshold:"), 1.0, 1.0,
_("_Threshold:"), 1.0, 1.0,
scale, 1, FALSE);
gtk_widget_show (asup_table);
button = gtk_check_button_new_with_label (_("Auto Update Preview"));
button = gtk_check_button_new_with_mnemonic (_("A_uto Update Preview"));
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), dlg->update_preview);
gtk_signal_connect (GTK_OBJECT (button), "toggled",
GTK_SIGNAL_FUNC (dlg_update_preview_callback),
@ -3109,7 +3107,7 @@ dlg_make_page_settings (GFlareDialog *dlg,
* Create Page
*/
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), main_vbox,
gtk_label_new (_("Settings")));
gtk_label_new_with_mnemonic (_("_Settings")));
gtk_signal_connect (GTK_OBJECT (table), "map",
GTK_SIGNAL_FUNC (dlg_page_map_callback),
(gpointer) PAGE_SETTINGS);
@ -3167,10 +3165,10 @@ dlg_make_page_selector (GFlareDialog *dlg,
}
buttons[] =
{
{ N_("New"), (GtkSignalFunc) &dlg_selector_new_callback },
{ N_("Edit"), (GtkSignalFunc) &dlg_selector_edit_callback },
{ N_("Copy"), (GtkSignalFunc) &dlg_selector_copy_callback },
{ N_("Delete"), (GtkSignalFunc) &dlg_selector_delete_callback }
{ N_("_New"), (GtkSignalFunc) &dlg_selector_new_callback },
{ N_("_Edit"), (GtkSignalFunc) &dlg_selector_edit_callback },
{ N_("Co_py"), (GtkSignalFunc) &dlg_selector_copy_callback },
{ N_("_Delete"), (GtkSignalFunc) &dlg_selector_delete_callback }
};
DEBUG_PRINT (("dlg_make_page_selector\n"));
@ -3205,7 +3203,7 @@ dlg_make_page_selector (GFlareDialog *dlg,
hbox = gtk_hbox_new (FALSE, 4);
for (i = 0; i < G_N_ELEMENTS (buttons); i++)
{
button = gtk_button_new_with_label (gettext (buttons[i].label));
button = gtk_button_new_with_mnemonic (gettext (buttons[i].label));
gtk_signal_connect (GTK_OBJECT (button), "clicked",
buttons[i].callback,
button);
@ -3221,7 +3219,7 @@ dlg_make_page_selector (GFlareDialog *dlg,
* Create Page
*/
gtk_notebook_append_page (GTK_NOTEBOOK (notebook), vbox,
gtk_label_new (_("Selector")));
gtk_label_new_with_mnemonic (_("S_elector")));
gtk_signal_connect (GTK_OBJECT (vbox), "map",
GTK_SIGNAL_FUNC (dlg_page_map_callback),
(gpointer) PAGE_SELECTOR);