app/tools/gimptexttool.c app/widgets/gimpfontselection.[ch] started to

2002-10-09  Sven Neumann  <sven@gimp.org>

	* app/tools/gimptexttool.c
	* app/widgets/gimpfontselection.[ch]
	* app/widgets/gimpwidgets-utils.[ch]: started to implement the
	text tool GUI as suggested in #84151.
This commit is contained in:
Sven Neumann 2002-10-09 15:42:38 +00:00 committed by Sven Neumann
parent 0c586b3044
commit 4c7b8a374b
6 changed files with 127 additions and 17 deletions

View File

@ -1,3 +1,10 @@
2002-10-09 Sven Neumann <sven@gimp.org>
* app/tools/gimptexttool.c
* app/widgets/gimpfontselection.[ch]
* app/widgets/gimpwidgets-utils.[ch]: started to implement the
text tool GUI as suggested in #84151.
2002-10-09 Michael Natterer <mitch@gimp.org>
* app/core/gimppalette.c (gimp_palette_get_new_preview): adjust

View File

@ -35,6 +35,7 @@
#include "core/gimptoolinfo.h"
#include "widgets/gimpfontselection.h"
#include "widgets/gimpwidgets-utils.h"
#include "display/gimpdisplay.h"
@ -73,6 +74,14 @@ struct _TextOptions
GimpUnit unit;
GimpUnit unit_d;
GtkWidget *unit_w;
gdouble line_spacing;
gdouble line_spacing_d;
GtkObject *line_spacing_w;
gdouble letter_spacing;
gdouble letter_spacing_d;
GtkObject *letter_spacing_w;
};
@ -370,6 +379,7 @@ text_tool_options_new (GimpToolInfo *tool_info)
GtkWidget *table;
GtkWidget *size_spinbutton;
GtkWidget *border_spinbutton;
GtkWidget *spin_button;
options = g_new0 (TextOptions, 1);
@ -377,18 +387,22 @@ text_tool_options_new (GimpToolInfo *tool_info)
((GimpToolOptions *) options)->reset_func = text_tool_options_reset;
options->fontname_d = DEFAULT_FONT;
options->border = options->border_d = 0;
options->size = options->size_d = DEFAULT_FONT_SIZE;
options->unit = options->unit_d = GIMP_UNIT_PIXEL;
options->fontname_d = DEFAULT_FONT;
options->border = options->border_d = 0;
options->size = options->size_d = DEFAULT_FONT_SIZE;
options->unit = options->unit_d = GIMP_UNIT_PIXEL;
options->line_spacing = options->line_spacing_d = 1.0;
options->letter_spacing = options->letter_spacing_d = 1.0;
/* the main vbox */
vbox = options->tool_options.main_vbox;
table = gtk_table_new (4, 3, FALSE);
table = gtk_table_new (4, 5, FALSE);
gtk_table_set_col_spacings (GTK_TABLE (table), 2);
gtk_table_set_row_spacings (GTK_TABLE (table), 2);
gtk_table_set_row_spacing (GTK_TABLE (table), 3, 12);
gtk_box_pack_start (GTK_BOX (vbox), GTK_WIDGET (table), FALSE, FALSE, 0);
gtk_widget_show (table);
pango_context = pango_ft2_get_context (gimprc.monitor_xres,
gimprc.monitor_yres);
@ -405,7 +419,7 @@ text_tool_options_new (GimpToolInfo *tool_info)
options->font_selection, 2, FALSE);
options->size_w = gimp_scale_entry_new (GTK_TABLE (table), 0, 1,
_("Size:"), -1, 5,
_("_Size:"), -1, 5,
options->size,
1.0, 256.0, 1.0, 50.0, 1,
FALSE, 1e-5, 32767.0,
@ -418,7 +432,7 @@ text_tool_options_new (GimpToolInfo *tool_info)
&options->size);
options->border_w = gimp_scale_entry_new (GTK_TABLE (table), 0, 2,
_("Border:"), -1, 5,
_("_Border:"), -1, 5,
options->border,
0.0, 100.0, 1.0, 50.0, 1,
FALSE, 0.0, 32767.0,
@ -446,7 +460,27 @@ text_tool_options_new (GimpToolInfo *tool_info)
G_CALLBACK (gimp_unit_menu_update),
&options->unit);
gtk_widget_show (table);
spin_button = gimp_spin_button_new (&options->letter_spacing_w,
options->letter_spacing,
0.0, 64.0, 0.1, 1.0, 0.0, 1.0, 2);
gtk_entry_set_width_chars (GTK_ENTRY (spin_button), 5);
gimp_table_attach_stock (GTK_TABLE (table), 0, 4,
GIMP_STOCK_LETTER_SPACING, spin_button);
g_signal_connect (G_OBJECT (options->letter_spacing_w), "value_changed",
G_CALLBACK (gimp_double_adjustment_update),
&options->letter_spacing);
spin_button = gimp_spin_button_new (&options->line_spacing_w,
options->line_spacing,
0.0, 64.0, 0.1, 1.0, 0.0, 1.0, 2);
gtk_entry_set_width_chars (GTK_ENTRY (spin_button), 5);
gimp_table_attach_stock (GTK_TABLE (table), 0, 5,
GIMP_STOCK_LINE_SPACING, spin_button);
g_signal_connect (G_OBJECT (options->line_spacing_w), "value_changed",
G_CALLBACK (gimp_double_adjustment_update),
&options->line_spacing);
return (GimpToolOptions *) options;
}
@ -478,4 +512,9 @@ text_tool_options_reset (GimpToolOptions *tool_options)
spinbutton =
g_object_get_data (G_OBJECT (spinbutton), "set_digits");
}
gtk_adjustment_set_value (GTK_ADJUSTMENT (options->line_spacing_w),
options->line_spacing_d);
gtk_adjustment_set_value (GTK_ADJUSTMENT (options->letter_spacing_w),
options->letter_spacing_d);
}

View File

@ -48,7 +48,7 @@ static void gimp_font_selection_class_init (GimpFontSelectionClass *k
static void gimp_font_selection_init (GimpFontSelection *fontsel);
static void gimp_font_selection_finalize (GObject *object);
static void gimp_font_selection_real_font_changed (GimpFontSelection *fontsel);
static void gimp_font_selection_real_activate (GimpFontSelection *fontsel);
static void gimp_font_selection_browse_callback (GtkWidget *widget,
gpointer data);
static void gimp_font_selection_entry_callback (GtkWidget *widget,
@ -60,6 +60,7 @@ static gboolean gimp_font_selection_entry_focus_out (GtkWidget *widget,
enum
{
FONT_CHANGED,
ACTIVATE,
LAST_SIGNAL
};
@ -99,9 +100,11 @@ gimp_font_selection_get_type (void)
static void
gimp_font_selection_class_init (GimpFontSelectionClass *klass)
{
GObjectClass *object_class;
GObjectClass *object_class;
GtkWidgetClass *widget_class;
object_class = G_OBJECT_CLASS (klass);
widget_class = GTK_WIDGET_CLASS (klass);
parent_class = g_type_class_peek_parent (klass);
@ -109,15 +112,26 @@ gimp_font_selection_class_init (GimpFontSelectionClass *klass)
g_signal_new ("font_changed",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpFontSelectionClass,
font_changed),
G_STRUCT_OFFSET (GimpFontSelectionClass, font_changed),
NULL, NULL,
gimp_marshal_VOID__VOID,
G_TYPE_NONE, 0);
gimp_font_selection_signals[ACTIVATE] =
g_signal_new ("activate",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST | G_SIGNAL_ACTION,
G_STRUCT_OFFSET (GimpFontSelectionClass, activate),
NULL, NULL,
gimp_marshal_VOID__VOID,
G_TYPE_NONE, 0);
object_class->finalize = gimp_font_selection_finalize;
widget_class->activate_signal = gimp_font_selection_signals[ACTIVATE];
klass->font_changed = gimp_font_selection_real_font_changed;
klass->activate = gimp_font_selection_real_activate;
}
static void
@ -126,7 +140,7 @@ gimp_font_selection_init (GimpFontSelection *fontsel)
GtkWidget *button;
GtkWidget *image;
fontsel->context = NULL;
fontsel->context = NULL;
fontsel->valid = gtk_image_new_from_stock (GTK_STOCK_NO, GTK_ICON_SIZE_MENU);
gtk_box_pack_start (GTK_BOX (fontsel), fontsel->valid, FALSE, FALSE, 0);
@ -204,6 +218,12 @@ gimp_font_selection_font_changed (GimpFontSelection *fontsel)
gimp_font_selection_signals[FONT_CHANGED], 0);
}
static void
gimp_font_selection_real_activate (GimpFontSelection *fontsel)
{
gtk_widget_activate (fontsel->entry);
}
static void
gimp_font_selection_real_font_changed (GimpFontSelection *fontsel)
{
@ -339,9 +359,7 @@ gimp_font_selection_browse_callback (GtkWidget *widget,
GimpFontSelection *fontsel = GIMP_FONT_SELECTION (data);
if (!fontsel->dialog)
{
fontsel->dialog = gimp_font_selection_dialog_new (fontsel);
}
fontsel->dialog = gimp_font_selection_dialog_new (fontsel);
gimp_font_selection_dialog_show (fontsel->dialog);
}

View File

@ -53,6 +53,7 @@ struct _GimpFontSelectionClass
GtkHBoxClass parent_class;
void (* font_changed) (GimpFontSelection *fontsel);
void (* activate) (GimpFontSelection *fontsel);
};

View File

@ -346,3 +346,43 @@ gimp_widget_get_callback_context (GtkWidget *widget)
return accel_context;
}
void
gimp_table_attach_stock (GtkTable *table,
gint column,
gint row,
const gchar *stock_id,
GtkWidget *widget)
{
GtkStockItem item;
GtkWidget *label;
GtkWidget *image;
g_return_if_fail (GTK_IS_TABLE (table));
g_return_if_fail (stock_id != NULL);
if (! gtk_stock_lookup (stock_id, &item))
return;
image = gtk_image_new_from_stock (stock_id, GTK_ICON_SIZE_BUTTON);
gtk_table_attach (table, image, column, column + 1, row, row + 1,
GTK_SHRINK, GTK_SHRINK, 0, 0);
gtk_widget_show (image);
label = gtk_label_new_with_mnemonic (item.label);
gtk_misc_set_alignment (GTK_MISC (label), 0.0, 0.5);
gtk_table_attach (table, label, column + 1, column + 2, row, row + 1,
GTK_FILL | GTK_EXPAND, GTK_FILL, 0, 0);
gtk_widget_show (label);
if (!widget)
return;
g_return_if_fail (GTK_IS_WIDGET (widget));
gtk_table_attach (table, widget, column + 2, column + 3, row, row + 1,
GTK_SHRINK, GTK_SHRINK, 0, 0);
gtk_widget_show (widget);
gtk_label_set_mnemonic_widget (GTK_LABEL (label), widget);
}

View File

@ -43,7 +43,12 @@ void gimp_window_add_accel_group (GtkWindow *window,
void gimp_window_remove_accel_group (GtkWindow *window,
GtkItemFactory *item_factory);
gpointer gimp_widget_get_callback_context (GtkWidget *widget);
gpointer gimp_widget_get_callback_context (GtkWidget *widget);
void gimp_table_attach_stock (GtkTable *table,
gint column,
gint row,
const gchar *stock_id,
GtkWidget *widget);
#endif /* __GIMP_WIDGETS_UTILS_H__ */