registered GimpFillType enum and added translatable names to

2002-05-13  Sven Neumann  <sven@gimp.org>

	* app/core/core-enums.[ch]: registered GimpFillType enum and added
	translatable names to GimpImageBaseType.

	* app/core/gimp.[ch]
	* app/core/gimpedit.c
	* app/core/gimpimage-new.[ch]: removed gimp_image_new_[init|exit]()
	where we used to create names for the enums mentioned above. Dropped
	gimp_image_new_set_have_current_cut_buffer() in favor of accessing
	the value directly.

	* app/gui/file-new-dialog.c (file_new_dialog_create)
	* app/gui/layers-commands.c (layers_new_layer_query): use
	GimpEnumMenus to choose the base_type and fill_type.
This commit is contained in:
Sven Neumann 2002-05-13 15:35:27 +00:00 committed by Sven Neumann
parent 73057f7689
commit 16e8b1bec8
13 changed files with 250 additions and 381 deletions

View File

@ -1,3 +1,19 @@
2002-05-13 Sven Neumann <sven@gimp.org>
* app/core/core-enums.[ch]: registered GimpFillType enum and added
translatable names to GimpImageBaseType.
* app/core/gimp.[ch]
* app/core/gimpedit.c
* app/core/gimpimage-new.[ch]: removed gimp_image_new_[init|exit]()
where we used to create names for the enums mentioned above. Dropped
gimp_image_new_set_have_current_cut_buffer() in favor of accessing
the value directly.
* app/gui/file-new-dialog.c (file_new_dialog_create)
* app/gui/layers-commands.c (layers_new_layer_query): use
GimpEnumMenus to choose the base_type and fill_type.
2002-05-13 Michael Natterer <mitch@gimp.org>
* app/paint-funcs/paint-funcs.c commented out a warning in

View File

@ -40,6 +40,7 @@
#include "pdb/procedural_db.h"
#include "widgets/gimpenummenu.h"
#include "widgets/gimpitemfactory.h"
#include "widgets/gimpwidgets-utils.h"
@ -522,6 +523,7 @@ layers_new_layer_query (GimpImage *gimage,
GtkObject *adjustment;
GtkWidget *spinbutton;
GtkWidget *frame;
GtkWidget *button;
g_return_if_fail (GIMP_IS_IMAGE (gimage));
g_return_if_fail (! template || GIMP_IS_LAYER (template));
@ -678,18 +680,14 @@ layers_new_layer_query (GimpImage *gimage,
gtk_widget_show (table);
/* The radio frame */
frame = gimp_radio_group_new2
(TRUE, _("Layer Fill Type"),
frame = gimp_enum_radio_frame_new (GIMP_TYPE_FILL_TYPE,
gtk_label_new (_("Layer Fill Type")),
2,
G_CALLBACK (gimp_radio_button_update),
&options->fill_type,
GINT_TO_POINTER (options->fill_type),
_("Foreground"), GINT_TO_POINTER (GIMP_FOREGROUND_FILL), NULL,
_("Background"), GINT_TO_POINTER (GIMP_BACKGROUND_FILL), NULL,
_("White"), GINT_TO_POINTER (GIMP_WHITE_FILL), NULL,
_("Transparent"), GINT_TO_POINTER (GIMP_TRANSPARENT_FILL), NULL,
NULL);
&button);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (button),
GINT_TO_POINTER (options->fill_type));
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);

View File

@ -93,6 +93,27 @@ gimp_convert_dither_type_get_type (void)
}
static const GEnumValue gimp_fill_type_enum_values[] =
{
{ GIMP_FOREGROUND_FILL, N_("Foreground"), "foreground-fill" },
{ GIMP_BACKGROUND_FILL, N_("Background"), "background-fill" },
{ GIMP_WHITE_FILL, N_("White"), "white-fill" },
{ GIMP_TRANSPARENT_FILL, N_("Transparent"), "transparent-fill" },
{ 0, NULL, NULL }
};
GType
gimp_fill_type_get_type (void)
{
static GType enum_type = 0;
if (!enum_type)
enum_type = g_enum_register_static ("GimpFillType", gimp_fill_type_enum_values);
return enum_type;
}
static const GEnumValue gimp_gradient_type_enum_values[] =
{
{ GIMP_LINEAR, N_("Linear"), "linear" },
@ -123,9 +144,8 @@ gimp_gradient_type_get_type (void)
static const GEnumValue gimp_image_base_type_enum_values[] =
{
{ GIMP_RGB, "GIMP_RGB", "rgb" },
{ GIMP_GRAY, "GIMP_GRAY", "gray" },
{ GIMP_INDEXED, "GIMP_INDEXED", "indexed" },
{ GIMP_RGB, N_("RGB"), "rgb" },
{ GIMP_GRAY, N_("Grayscale"), "gray" },
{ 0, NULL, NULL }
};

View File

@ -94,6 +94,20 @@ typedef enum
} GimpConvertDitherType;
#define GIMP_TYPE_FILL_TYPE (gimp_fill_type_get_type ())
GType gimp_fill_type_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_FOREGROUND_FILL, /*< desc="Foreground" >*/
GIMP_BACKGROUND_FILL, /*< desc="Background" >*/
GIMP_WHITE_FILL, /*< desc="White" >*/
GIMP_TRANSPARENT_FILL, /*< desc="Transparent" >*/
GIMP_NO_FILL /*< skip >*/
} GimpFillType;
#define GIMP_TYPE_GRADIENT_TYPE (gimp_gradient_type_get_type ())
GType gimp_gradient_type_get_type (void) G_GNUC_CONST;
@ -120,9 +134,9 @@ GType gimp_image_base_type_get_type (void) G_GNUC_CONST;
typedef enum
{
GIMP_RGB,
GIMP_GRAY,
GIMP_INDEXED
GIMP_RGB, /*< desc="RGB" >*/
GIMP_GRAY, /*< desc="Grayscale" >*/
GIMP_INDEXED /*< skip >*/
} GimpImageBaseType;
@ -242,15 +256,6 @@ typedef enum /*< proxy-skip >*/ /*< skip >*/
GIMP_CUSTOM_PALETTE
} GimpConvertPaletteType;
typedef enum /*< skip >*/
{
GIMP_FOREGROUND_FILL,
GIMP_BACKGROUND_FILL,
GIMP_WHITE_FILL,
GIMP_TRANSPARENT_FILL,
GIMP_NO_FILL
} GimpFillType;
typedef enum /*< pdb-skip >*/ /*< skip >*/
{
GIMP_GRAD_LINEAR = 0,

View File

@ -37,7 +37,6 @@
#include "gimpedit.h"
#include "gimpimage.h"
#include "gimpimage-mask.h"
#include "gimpimage-new.h"
#include "gimplayer.h"
#include "gimplayer-floating-sel.h"
#include "gimplist.h"
@ -68,7 +67,7 @@ gimp_edit_cut (GimpImage *gimage,
cut = gimp_image_mask_extract (gimage, drawable, TRUE, FALSE, TRUE);
if (cut)
gimp_image_new_set_have_current_cut_buffer (gimage->gimp);
gimage->gimp->have_current_cut_buffer = TRUE;
/* Only crop if the gimage mask wasn't empty */
if (cut && ! empty)
@ -122,7 +121,7 @@ gimp_edit_copy (GimpImage *gimage,
copy = gimp_image_mask_extract (gimage, drawable, FALSE, FALSE, TRUE);
if (copy)
gimp_image_new_set_have_current_cut_buffer (gimage->gimp);
gimage->gimp->have_current_cut_buffer = TRUE;
/* Only crop if the gimage mask wasn't empty */
if (copy && ! empty)

View File

@ -187,8 +187,6 @@ gimp_init (Gimp *gimp)
gimp_documents_init (gimp);
gimp->image_base_type_names = NULL;
gimp->fill_type_names = NULL;
gimp->have_current_cut_buffer = FALSE;
gimp->context_list = NULL;
@ -242,9 +240,6 @@ gimp_finalize (GObject *object)
gimp->standard_context = NULL;
}
if (gimp->image_base_type_names)
gimp_image_new_exit (gimp);
if (gimp->documents)
gimp_documents_exit (gimp);
@ -385,9 +380,6 @@ gimp_get_memsize (GimpObject *object)
gimp_object_get_memsize (GIMP_OBJECT (gimp->standard_tool_info)) +
gimp_object_get_memsize (GIMP_OBJECT (gimp->documents)));
memsize += g_list_length (gimp->image_base_type_names) * sizeof (GList); /* FIXME */
memsize += g_list_length (gimp->fill_type_names) * sizeof (GList); /* FIXME */
memsize += g_list_length (gimp->context_list) * sizeof (GList);
memsize += (gimp_object_get_memsize (GIMP_OBJECT (gimp->standard_context)) +
@ -485,7 +477,18 @@ gimp_initialize (Gimp *gimp,
gimp_palette_get_standard);
gimp_object_set_name (GIMP_OBJECT (gimp->palette_factory), "palette factory");
gimp_image_new_init (gimp);
/* Set the last values used to default values. */
gimp->image_new_last_values.width = gimp->config->default_width;
gimp->image_new_last_values.height = gimp->config->default_height;
gimp->image_new_last_values.unit = gimp->config->default_units;
gimp->image_new_last_values.xresolution = gimp->config->default_xresolution;
gimp->image_new_last_values.yresolution = gimp->config->default_yresolution;
gimp->image_new_last_values.res_unit = gimp->config->default_resolution_units;
gimp->image_new_last_values.type = gimp->config->default_type;
gimp->image_new_last_values.fill_type = GIMP_BACKGROUND_FILL;
gimp->have_current_cut_buffer = FALSE;
gimp->standard_context = gimp_context_new (gimp, "Standard", NULL);

View File

@ -107,8 +107,6 @@ struct _Gimp
GimpContainer *documents;
/* image_new values */
GList *image_base_type_names;
GList *fill_type_names;
GimpImageNewValues image_new_last_values;
gboolean have_current_cut_buffer;

View File

@ -37,7 +37,6 @@
#include "gimpedit.h"
#include "gimpimage.h"
#include "gimpimage-mask.h"
#include "gimpimage-new.h"
#include "gimplayer.h"
#include "gimplayer-floating-sel.h"
#include "gimplist.h"
@ -68,7 +67,7 @@ gimp_edit_cut (GimpImage *gimage,
cut = gimp_image_mask_extract (gimage, drawable, TRUE, FALSE, TRUE);
if (cut)
gimp_image_new_set_have_current_cut_buffer (gimage->gimp);
gimage->gimp->have_current_cut_buffer = TRUE;
/* Only crop if the gimage mask wasn't empty */
if (cut && ! empty)
@ -122,7 +121,7 @@ gimp_edit_copy (GimpImage *gimage,
copy = gimp_image_mask_extract (gimage, drawable, FALSE, FALSE, TRUE);
if (copy)
gimp_image_new_set_have_current_cut_buffer (gimage->gimp);
gimage->gimp->have_current_cut_buffer = TRUE;
/* Only crop if the gimage mask wasn't empty */
if (copy && ! empty)

View File

@ -39,92 +39,6 @@
#include "libgimp/gimpintl.h"
void
gimp_image_new_init (Gimp *gimp)
{
GimpImageBaseTypeName *new_type;
GimpFillTypeName *new_fill_type;
/* Available Image Base Types */
new_type = g_new (GimpImageBaseTypeName, 1);
new_type->type = GIMP_RGB;
new_type->name = _("RGB");
gimp->image_base_type_names = g_list_append (gimp->image_base_type_names,
new_type);
new_type = g_new (GimpImageBaseTypeName, 1);
new_type->type = GIMP_GRAY;
new_type->name = _("Grayscale");
gimp->image_base_type_names = g_list_append (gimp->image_base_type_names,
new_type);
/* Available Fill Types */
new_fill_type = g_new (GimpFillTypeName, 1);
new_fill_type->type = GIMP_FOREGROUND_FILL;
new_fill_type->name = _("Foreground");
gimp->fill_type_names = g_list_append (gimp->fill_type_names, new_fill_type);
new_fill_type = g_new (GimpFillTypeName, 1);
new_fill_type->type = GIMP_BACKGROUND_FILL;
new_fill_type->name = _("Background");
gimp->fill_type_names = g_list_append (gimp->fill_type_names, new_fill_type);
new_fill_type = g_new (GimpFillTypeName, 1);
new_fill_type->type = GIMP_WHITE_FILL;
new_fill_type->name = _("White");
gimp->fill_type_names = g_list_append (gimp->fill_type_names, new_fill_type);
new_fill_type = g_new (GimpFillTypeName, 1);
new_fill_type->type = GIMP_TRANSPARENT_FILL;
new_fill_type->name = _("Transparent");
gimp->fill_type_names = g_list_append (gimp->fill_type_names, new_fill_type);
/* Set the last values used to default values. */
gimp->image_new_last_values.width = gimp->config->default_width;
gimp->image_new_last_values.height = gimp->config->default_height;
gimp->image_new_last_values.unit = gimp->config->default_units;
gimp->image_new_last_values.xresolution = gimp->config->default_xresolution;
gimp->image_new_last_values.yresolution = gimp->config->default_yresolution;
gimp->image_new_last_values.res_unit = gimp->config->default_resolution_units;
gimp->image_new_last_values.type = gimp->config->default_type;
gimp->image_new_last_values.fill_type = GIMP_BACKGROUND_FILL;
gimp->have_current_cut_buffer = FALSE;
}
void
gimp_image_new_exit (Gimp *gimp)
{
g_list_foreach (gimp->image_base_type_names, (GFunc) g_free, NULL);
g_list_free (gimp->image_base_type_names);
gimp->image_base_type_names = NULL;
g_list_foreach (gimp->fill_type_names, (GFunc) g_free, NULL);
g_list_free (gimp->fill_type_names);
gimp->fill_type_names = NULL;
}
GList *
gimp_image_new_get_base_type_names (Gimp *gimp)
{
return gimp->image_base_type_names;
}
GList *
gimp_image_new_get_fill_type_names (Gimp *gimp)
{
return gimp->fill_type_names;
}
GimpImageNewValues *
gimp_image_new_values_new (Gimp *gimp,
GimpImage *gimage)
@ -223,12 +137,6 @@ gimp_image_new_get_memsize_string (gsize memsize)
}
}
void
gimp_image_new_set_have_current_cut_buffer (Gimp *gimp)
{
gimp->have_current_cut_buffer = TRUE;
}
GimpImage *
gimp_image_new_create_image (Gimp *gimp,
GimpImageNewValues *values)

View File

@ -20,19 +20,6 @@
#define __GIMP_IMAGE_NEW_H__
typedef struct
{
GimpImageBaseType type;
gchar *name;
} GimpImageBaseTypeName;
typedef struct
{
GimpFillType type;
gchar *name;
} GimpFillTypeName;
struct _GimpImageNewValues
{
gint width;
@ -48,12 +35,6 @@ struct _GimpImageNewValues
};
void gimp_image_new_init (Gimp *gimp);
void gimp_image_new_exit (Gimp *gimp);
GList * gimp_image_new_get_base_type_names (Gimp *gimp);
GList * gimp_image_new_get_fill_type_names (Gimp *gimp);
GimpImageNewValues * gimp_image_new_values_new (Gimp *gimp,
GimpImage *gimage);
@ -64,8 +45,6 @@ void gimp_image_new_values_free (GimpImageNewValues *values);
gsize gimp_image_new_calculate_memsize (GimpImageNewValues *values);
gchar * gimp_image_new_get_memsize_string (gsize memsize);
void gimp_image_new_set_have_current_cut_buffer (Gimp *gimp);
GimpImage * gimp_image_new_create_image (Gimp *gimp,
GimpImageNewValues *values);

View File

@ -31,6 +31,8 @@
#include "core/gimpimage.h"
#include "core/gimpimage-new.h"
#include "widgets/gimpenummenu.h"
#include "file-new-dialog.h"
#include "gimprc.h"
@ -49,9 +51,8 @@ typedef struct
GtkWidget *resolution_se;
GtkWidget *couple_resolutions;
/* this should be a list */
GtkWidget *type_w[2];
GtkWidget *fill_type_w[4];
GtkWidget *type_w;
GtkWidget *fill_type_w;
GimpImageNewValues *values;
gdouble size;
@ -72,6 +73,10 @@ static void file_new_cancel_callback (GtkWidget *widget,
gpointer data);
static void file_new_resolution_callback (GtkWidget *widget,
gpointer data);
static void file_new_image_type_callback (GtkWidget *widget,
gpointer data);
static void file_new_fill_type_callback (GtkWidget *widget,
gpointer data);
static void file_new_image_size_callback (GtkWidget *widget,
gpointer data);
@ -91,13 +96,9 @@ file_new_dialog_create (Gimp *gimp,
GtkWidget *table;
GtkWidget *separator;
GtkWidget *label;
GtkWidget *button;
GtkObject *adjustment;
GtkWidget *spinbutton;
GtkWidget *spinbutton2;
GtkWidget *radio_box;
GSList *group;
GList *list;
g_return_if_fail (GIMP_IS_GIMP (gimp));
g_return_if_fail (! gimage || GIMP_IS_IMAGE (gimage));
@ -358,87 +359,31 @@ file_new_dialog_create (Gimp *gimp,
gtk_widget_show (hbox);
/* frame for Image Type */
frame = gtk_frame_new (_("Image Type"));
frame = gimp_enum_radio_frame_new (GIMP_TYPE_IMAGE_BASE_TYPE,
gtk_label_new (_("Image Type")),
2,
G_CALLBACK (file_new_image_type_callback),
info,
&info->type_w);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->type_w),
GINT_TO_POINTER (info->values->type));
gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
gtk_widget_show (frame);
/* radio buttons and box */
radio_box = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (radio_box), 2);
gtk_container_add (GTK_CONTAINER (frame), radio_box);
gtk_widget_show (radio_box);
group = NULL;
for (list = gimp_image_new_get_base_type_names (gimp);
list;
list = g_list_next (list))
{
GimpImageBaseTypeName *name_info;
name_info = (GimpImageBaseTypeName*) list->data;
button = gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, FALSE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_radio_button_update),
&info->values->type);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (file_new_image_size_callback),
info);
if (info->values->type == name_info->type)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
info->type_w[name_info->type] = button;
}
/* frame for Fill Type */
frame = gtk_frame_new (_("Fill Type"));
frame = gimp_enum_radio_frame_new (GIMP_TYPE_FILL_TYPE,
gtk_label_new (_("Fill Type")),
2,
G_CALLBACK (file_new_fill_type_callback),
info,
&info->fill_type_w);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w),
GINT_TO_POINTER (info->values->fill_type));
gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
gtk_widget_show (frame);
radio_box = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (radio_box), 2);
gtk_container_add (GTK_CONTAINER (frame), radio_box);
gtk_widget_show (radio_box);
group = NULL;
for (list = gimp_image_new_get_fill_type_names (gimp);
list;
list = g_list_next (list))
{
GimpFillTypeName *name_info;
name_info = (GimpFillTypeName*) list->data;
button =
gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, TRUE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_radio_button_update),
&info->values->fill_type);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (file_new_image_size_callback),
info);
if (info->values->fill_type == name_info->type)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
info->fill_type_w[name_info->type] = button;
}
gimp_size_entry_grab_focus (GIMP_SIZE_ENTRY (info->size_se));
gtk_widget_show (info->dialog);
@ -493,45 +438,47 @@ file_new_reset_callback (GtkWidget *widget,
gpointer data)
{
NewImageInfo *info;
GimpCoreConfig *config;
info = (NewImageInfo *) data;
config = info->gimp->config;
g_signal_handlers_block_by_func (G_OBJECT (info->resolution_se),
file_new_resolution_callback,
info);
gimp_chain_button_set_active
(GIMP_CHAIN_BUTTON (info->couple_resolutions),
ABS (info->gimp->config->default_xresolution -
info->gimp->config->default_yresolution) < GIMP_MIN_RESOLUTION);
ABS (config->default_xresolution -
config->default_yresolution) < GIMP_MIN_RESOLUTION);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->resolution_se), 0,
info->gimp->config->default_xresolution);
config->default_xresolution);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->resolution_se), 1,
info->gimp->config->default_yresolution);
config->default_yresolution);
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (info->resolution_se),
info->gimp->config->default_resolution_units);
config->default_resolution_units);
g_signal_handlers_unblock_by_func (G_OBJECT (info->resolution_se),
file_new_resolution_callback,
info);
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (info->size_se), 0,
info->gimp->config->default_xresolution, TRUE);
config->default_xresolution, TRUE);
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (info->size_se), 1,
info->gimp->config->default_yresolution, TRUE);
config->default_yresolution, TRUE);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->size_se), 0,
info->gimp->config->default_width);
config->default_width);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->size_se), 1,
info->gimp->config->default_height);
config->default_height);
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (info->size_se),
info->gimp->config->default_units);
config->default_units);
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->type_w),
GINT_TO_POINTER (config->default_type));
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w[0]),
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w),
GINT_TO_POINTER (GIMP_BACKGROUND_FILL));
}
@ -671,6 +618,32 @@ file_new_resolution_callback (GtkWidget *widget,
file_new_image_size_callback (widget, data);
}
static void
file_new_image_type_callback (GtkWidget *widget,
gpointer data)
{
NewImageInfo *info;
info = (NewImageInfo*) data;
gimp_radio_button_update (widget, &info->values->type);
file_new_image_size_callback (widget, data);
}
static void
file_new_fill_type_callback (GtkWidget *widget,
gpointer data)
{
NewImageInfo *info;
info = (NewImageInfo*) data;
gimp_radio_button_update (widget, &info->values->fill_type);
file_new_image_size_callback (widget, data);
}
static void
file_new_image_size_callback (GtkWidget *widget,
gpointer data)

View File

@ -31,6 +31,8 @@
#include "core/gimpimage.h"
#include "core/gimpimage-new.h"
#include "widgets/gimpenummenu.h"
#include "file-new-dialog.h"
#include "gimprc.h"
@ -49,9 +51,8 @@ typedef struct
GtkWidget *resolution_se;
GtkWidget *couple_resolutions;
/* this should be a list */
GtkWidget *type_w[2];
GtkWidget *fill_type_w[4];
GtkWidget *type_w;
GtkWidget *fill_type_w;
GimpImageNewValues *values;
gdouble size;
@ -72,6 +73,10 @@ static void file_new_cancel_callback (GtkWidget *widget,
gpointer data);
static void file_new_resolution_callback (GtkWidget *widget,
gpointer data);
static void file_new_image_type_callback (GtkWidget *widget,
gpointer data);
static void file_new_fill_type_callback (GtkWidget *widget,
gpointer data);
static void file_new_image_size_callback (GtkWidget *widget,
gpointer data);
@ -91,13 +96,9 @@ file_new_dialog_create (Gimp *gimp,
GtkWidget *table;
GtkWidget *separator;
GtkWidget *label;
GtkWidget *button;
GtkObject *adjustment;
GtkWidget *spinbutton;
GtkWidget *spinbutton2;
GtkWidget *radio_box;
GSList *group;
GList *list;
g_return_if_fail (GIMP_IS_GIMP (gimp));
g_return_if_fail (! gimage || GIMP_IS_IMAGE (gimage));
@ -358,87 +359,31 @@ file_new_dialog_create (Gimp *gimp,
gtk_widget_show (hbox);
/* frame for Image Type */
frame = gtk_frame_new (_("Image Type"));
frame = gimp_enum_radio_frame_new (GIMP_TYPE_IMAGE_BASE_TYPE,
gtk_label_new (_("Image Type")),
2,
G_CALLBACK (file_new_image_type_callback),
info,
&info->type_w);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->type_w),
GINT_TO_POINTER (info->values->type));
gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
gtk_widget_show (frame);
/* radio buttons and box */
radio_box = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (radio_box), 2);
gtk_container_add (GTK_CONTAINER (frame), radio_box);
gtk_widget_show (radio_box);
group = NULL;
for (list = gimp_image_new_get_base_type_names (gimp);
list;
list = g_list_next (list))
{
GimpImageBaseTypeName *name_info;
name_info = (GimpImageBaseTypeName*) list->data;
button = gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, FALSE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_radio_button_update),
&info->values->type);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (file_new_image_size_callback),
info);
if (info->values->type == name_info->type)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
info->type_w[name_info->type] = button;
}
/* frame for Fill Type */
frame = gtk_frame_new (_("Fill Type"));
frame = gimp_enum_radio_frame_new (GIMP_TYPE_FILL_TYPE,
gtk_label_new (_("Fill Type")),
2,
G_CALLBACK (file_new_fill_type_callback),
info,
&info->fill_type_w);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w),
GINT_TO_POINTER (info->values->fill_type));
gtk_box_pack_start (GTK_BOX (hbox), frame, TRUE, TRUE, 0);
gtk_widget_show (frame);
radio_box = gtk_vbox_new (FALSE, 1);
gtk_container_set_border_width (GTK_CONTAINER (radio_box), 2);
gtk_container_add (GTK_CONTAINER (frame), radio_box);
gtk_widget_show (radio_box);
group = NULL;
for (list = gimp_image_new_get_fill_type_names (gimp);
list;
list = g_list_next (list))
{
GimpFillTypeName *name_info;
name_info = (GimpFillTypeName*) list->data;
button =
gtk_radio_button_new_with_label (group, name_info->name);
group = gtk_radio_button_get_group (GTK_RADIO_BUTTON (button));
gtk_box_pack_start (GTK_BOX (radio_box), button, TRUE, TRUE, 0);
g_object_set_data (G_OBJECT (button), "gimp-item-data",
(gpointer) name_info->type);
gtk_widget_show (button);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (gimp_radio_button_update),
&info->values->fill_type);
g_signal_connect (G_OBJECT (button), "toggled",
G_CALLBACK (file_new_image_size_callback),
info);
if (info->values->fill_type == name_info->type)
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button), TRUE);
info->fill_type_w[name_info->type] = button;
}
gimp_size_entry_grab_focus (GIMP_SIZE_ENTRY (info->size_se));
gtk_widget_show (info->dialog);
@ -493,45 +438,47 @@ file_new_reset_callback (GtkWidget *widget,
gpointer data)
{
NewImageInfo *info;
GimpCoreConfig *config;
info = (NewImageInfo *) data;
config = info->gimp->config;
g_signal_handlers_block_by_func (G_OBJECT (info->resolution_se),
file_new_resolution_callback,
info);
gimp_chain_button_set_active
(GIMP_CHAIN_BUTTON (info->couple_resolutions),
ABS (info->gimp->config->default_xresolution -
info->gimp->config->default_yresolution) < GIMP_MIN_RESOLUTION);
ABS (config->default_xresolution -
config->default_yresolution) < GIMP_MIN_RESOLUTION);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->resolution_se), 0,
info->gimp->config->default_xresolution);
config->default_xresolution);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->resolution_se), 1,
info->gimp->config->default_yresolution);
config->default_yresolution);
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (info->resolution_se),
info->gimp->config->default_resolution_units);
config->default_resolution_units);
g_signal_handlers_unblock_by_func (G_OBJECT (info->resolution_se),
file_new_resolution_callback,
info);
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (info->size_se), 0,
info->gimp->config->default_xresolution, TRUE);
config->default_xresolution, TRUE);
gimp_size_entry_set_resolution (GIMP_SIZE_ENTRY (info->size_se), 1,
info->gimp->config->default_yresolution, TRUE);
config->default_yresolution, TRUE);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->size_se), 0,
info->gimp->config->default_width);
config->default_width);
gimp_size_entry_set_refval (GIMP_SIZE_ENTRY (info->size_se), 1,
info->gimp->config->default_height);
config->default_height);
gimp_size_entry_set_unit (GIMP_SIZE_ENTRY (info->size_se),
info->gimp->config->default_units);
config->default_units);
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->type_w),
GINT_TO_POINTER (config->default_type));
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w[0]),
gimp_radio_group_set_active (GTK_RADIO_BUTTON (info->fill_type_w),
GINT_TO_POINTER (GIMP_BACKGROUND_FILL));
}
@ -671,6 +618,32 @@ file_new_resolution_callback (GtkWidget *widget,
file_new_image_size_callback (widget, data);
}
static void
file_new_image_type_callback (GtkWidget *widget,
gpointer data)
{
NewImageInfo *info;
info = (NewImageInfo*) data;
gimp_radio_button_update (widget, &info->values->type);
file_new_image_size_callback (widget, data);
}
static void
file_new_fill_type_callback (GtkWidget *widget,
gpointer data)
{
NewImageInfo *info;
info = (NewImageInfo*) data;
gimp_radio_button_update (widget, &info->values->fill_type);
file_new_image_size_callback (widget, data);
}
static void
file_new_image_size_callback (GtkWidget *widget,
gpointer data)

View File

@ -40,6 +40,7 @@
#include "pdb/procedural_db.h"
#include "widgets/gimpenummenu.h"
#include "widgets/gimpitemfactory.h"
#include "widgets/gimpwidgets-utils.h"
@ -522,6 +523,7 @@ layers_new_layer_query (GimpImage *gimage,
GtkObject *adjustment;
GtkWidget *spinbutton;
GtkWidget *frame;
GtkWidget *button;
g_return_if_fail (GIMP_IS_IMAGE (gimage));
g_return_if_fail (! template || GIMP_IS_LAYER (template));
@ -678,18 +680,14 @@ layers_new_layer_query (GimpImage *gimage,
gtk_widget_show (table);
/* The radio frame */
frame = gimp_radio_group_new2
(TRUE, _("Layer Fill Type"),
frame = gimp_enum_radio_frame_new (GIMP_TYPE_FILL_TYPE,
gtk_label_new (_("Layer Fill Type")),
2,
G_CALLBACK (gimp_radio_button_update),
&options->fill_type,
GINT_TO_POINTER (options->fill_type),
_("Foreground"), GINT_TO_POINTER (GIMP_FOREGROUND_FILL), NULL,
_("Background"), GINT_TO_POINTER (GIMP_BACKGROUND_FILL), NULL,
_("White"), GINT_TO_POINTER (GIMP_WHITE_FILL), NULL,
_("Transparent"), GINT_TO_POINTER (GIMP_TRANSPARENT_FILL), NULL,
NULL);
&button);
gimp_radio_group_set_active (GTK_RADIO_BUTTON (button),
GINT_TO_POINTER (options->fill_type));
gtk_box_pack_start (GTK_BOX (vbox), frame, FALSE, FALSE, 0);
gtk_widget_show (frame);