mirror of https://github.com/GNOME/gimp.git
removed a gdk_pointer_ungrab(), it was only there because of buggy gtk+
2001-08-07 Michael Natterer <mitch@gimp.org> * app/disp_callbacks.c: removed a gdk_pointer_ungrab(), it was only there because of buggy gtk+ 1.2.x. Cosmetic changes. * app/undo.c: use G_N_ELEMENTS() instead of sizeof(array)/sizeof(element). * app/gui/menus.c: more stock icons, moved the item_factory creation into the menus_get_foo_factory() functions, use G_N_ELEMENTS(). This file badly needs to be spit up... * app/core/gimpviewable.[ch] * app/widgets/gimpcontainermenu.[ch] * app/widgets/gimpcontainerview.[ch] * app/widgets/gimplistitem.[ch] * app/widgets/gimpmenuitem.[ch] * app/widgets/gimppreview.[ch]: replaced tons of signal emissions by virtual functions which are *much* faster. Moreover, all of them are private implementation bits of the specific class hierarchy and are useless or even dangerous to be exposed as signals. * app/widgets/gimpdrawablelistitem.c: removed the drag_motion() implementation as it's already done in the parent class. * app/widgets/gimplistitem.[ch] * app/widgets/gimplayerlistitem.c: redraw the widget when the drop_type has changed. Fixes drop_indicator drawing.
This commit is contained in:
parent
1c9069c4ca
commit
7de0a2cbdd
30
ChangeLog
30
ChangeLog
|
@ -1,3 +1,33 @@
|
|||
2001-08-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/disp_callbacks.c: removed a gdk_pointer_ungrab(), it was
|
||||
only there because of buggy gtk+ 1.2.x. Cosmetic changes.
|
||||
|
||||
* app/undo.c: use G_N_ELEMENTS() instead of
|
||||
sizeof(array)/sizeof(element).
|
||||
|
||||
* app/gui/menus.c: more stock icons, moved the item_factory
|
||||
creation into the menus_get_foo_factory() functions, use
|
||||
G_N_ELEMENTS(). This file badly needs to be spit up...
|
||||
|
||||
* app/core/gimpviewable.[ch]
|
||||
* app/widgets/gimpcontainermenu.[ch]
|
||||
* app/widgets/gimpcontainerview.[ch]
|
||||
* app/widgets/gimplistitem.[ch]
|
||||
* app/widgets/gimpmenuitem.[ch]
|
||||
* app/widgets/gimppreview.[ch]: replaced tons of signal emissions
|
||||
by virtual functions which are *much* faster. Moreover, all of
|
||||
them are private implementation bits of the specific class
|
||||
hierarchy and are useless or even dangerous to be exposed as
|
||||
signals.
|
||||
|
||||
* app/widgets/gimpdrawablelistitem.c: removed the drag_motion()
|
||||
implementation as it's already done in the parent class.
|
||||
|
||||
* app/widgets/gimplistitem.[ch]
|
||||
* app/widgets/gimplayerlistitem.c: redraw the widget when the
|
||||
drop_type has changed. Fixes drop_indicator drawing.
|
||||
|
||||
2001-08-07 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* libgimpwidgets/gimpbutton.[ch]: cleanup.
|
||||
|
|
|
@ -2959,15 +2959,13 @@ undo_name[] =
|
|||
{ IMAGE_RESIZE_UNDO, N_("image resize") },
|
||||
{ MISC_UNDO, N_("misc") }
|
||||
};
|
||||
#define NUM_NAMES (sizeof (undo_name) / sizeof (struct undo_name_t))
|
||||
|
||||
|
||||
static const gchar *
|
||||
undo_type_to_name (UndoType type)
|
||||
{
|
||||
gint i;
|
||||
|
||||
for (i=0; i < NUM_NAMES; i++)
|
||||
for (i = 0; i < G_N_ELEMENTS (undo_name); i++)
|
||||
if (undo_name[i].type == type)
|
||||
return gettext (undo_name[i].name);
|
||||
|
||||
|
|
|
@ -35,8 +35,6 @@ enum
|
|||
{
|
||||
INVALIDATE_PREVIEW,
|
||||
SIZE_CHANGED,
|
||||
GET_PREVIEW,
|
||||
GET_NEW_PREVIEW,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -59,19 +57,22 @@ gimp_viewable_get_type (void)
|
|||
|
||||
if (! viewable_type)
|
||||
{
|
||||
GtkTypeInfo viewable_info =
|
||||
static const GTypeInfo viewable_info =
|
||||
{
|
||||
"GimpViewable",
|
||||
sizeof (GimpViewable),
|
||||
sizeof (GimpViewableClass),
|
||||
(GtkClassInitFunc) gimp_viewable_class_init,
|
||||
(GtkObjectInitFunc) gimp_viewable_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
NULL, /* base_init */
|
||||
NULL, /* base_finalize */
|
||||
(GClassInitFunc) gimp_viewable_class_init,
|
||||
NULL, /* class_finalize */
|
||||
NULL, /* class_data */
|
||||
sizeof (GimpViewable),
|
||||
0, /* n_preallocs */
|
||||
(GInstanceInitFunc) gimp_viewable_init,
|
||||
};
|
||||
|
||||
viewable_type = gtk_type_unique (GIMP_TYPE_OBJECT, &viewable_info);
|
||||
viewable_type = g_type_register_static (GIMP_TYPE_OBJECT,
|
||||
"GimpViewable",
|
||||
&viewable_info, 0);
|
||||
}
|
||||
|
||||
return viewable_type;
|
||||
|
@ -80,10 +81,6 @@ gimp_viewable_get_type (void)
|
|||
static void
|
||||
gimp_viewable_class_init (GimpViewableClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
object_class = (GtkObjectClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
viewable_signals[INVALIDATE_PREVIEW] =
|
||||
|
@ -104,30 +101,9 @@ gimp_viewable_class_init (GimpViewableClass *klass)
|
|||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
viewable_signals[GET_PREVIEW] =
|
||||
g_signal_new ("get_preview",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpViewableClass, get_preview),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__INT_INT,
|
||||
G_TYPE_POINTER, 2,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_INT);
|
||||
|
||||
viewable_signals[GET_NEW_PREVIEW] =
|
||||
g_signal_new ("get_new_preview",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpViewableClass, get_new_preview),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__INT_INT,
|
||||
G_TYPE_POINTER, 2,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_INT);
|
||||
|
||||
klass->invalidate_preview = gimp_viewable_real_invalidate_preview;
|
||||
klass->size_changed = NULL;
|
||||
|
||||
klass->get_preview = NULL;
|
||||
klass->get_new_preview = NULL;
|
||||
}
|
||||
|
@ -166,14 +142,17 @@ gimp_viewable_get_preview (GimpViewable *viewable,
|
|||
gint width,
|
||||
gint height)
|
||||
{
|
||||
TempBuf *temp_buf = NULL;
|
||||
GimpViewableClass *viewable_class;
|
||||
TempBuf *temp_buf = NULL;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_VIEWABLE (viewable), NULL);
|
||||
g_return_val_if_fail (width > 0, NULL);
|
||||
g_return_val_if_fail (height > 0, NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (viewable), viewable_signals[GET_PREVIEW], 0,
|
||||
width, height, &temp_buf);
|
||||
viewable_class = GIMP_VIEWABLE_GET_CLASS (viewable);
|
||||
|
||||
if (viewable_class->get_preview)
|
||||
temp_buf = viewable_class->get_preview (viewable, width, height);
|
||||
|
||||
if (temp_buf)
|
||||
return temp_buf;
|
||||
|
@ -188,8 +167,8 @@ gimp_viewable_get_preview (GimpViewable *viewable,
|
|||
|
||||
temp_buf = NULL;
|
||||
|
||||
g_signal_emit (G_OBJECT (viewable), viewable_signals[GET_NEW_PREVIEW], 0,
|
||||
width, height, &temp_buf);
|
||||
if (viewable_class->get_new_preview)
|
||||
temp_buf = viewable_class->get_new_preview (viewable, width, height);
|
||||
|
||||
g_object_set_data_full (G_OBJECT (viewable), "static-viewable-preview",
|
||||
temp_buf,
|
||||
|
@ -203,20 +182,23 @@ gimp_viewable_get_new_preview (GimpViewable *viewable,
|
|||
gint width,
|
||||
gint height)
|
||||
{
|
||||
TempBuf *temp_buf = NULL;
|
||||
GimpViewableClass *viewable_class;
|
||||
TempBuf *temp_buf = NULL;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_VIEWABLE (viewable), NULL);
|
||||
g_return_val_if_fail (width > 0, NULL);
|
||||
g_return_val_if_fail (height > 0, NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (viewable), viewable_signals[GET_NEW_PREVIEW], 0,
|
||||
width, height, &temp_buf);
|
||||
viewable_class = GIMP_VIEWABLE_GET_CLASS (viewable);
|
||||
|
||||
if (viewable_class->get_new_preview)
|
||||
temp_buf = viewable_class->get_new_preview (viewable, width, height);
|
||||
|
||||
if (temp_buf)
|
||||
return temp_buf;
|
||||
|
||||
g_signal_emit (G_OBJECT (viewable), viewable_signals[GET_PREVIEW], 0,
|
||||
width, height, &temp_buf);
|
||||
if (viewable_class->get_preview)
|
||||
temp_buf = viewable_class->get_preview (viewable, width, height);
|
||||
|
||||
if (temp_buf)
|
||||
return temp_buf_copy (temp_buf, NULL);
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#define GIMP_VIEWABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_VIEWABLE, GimpViewableClass))
|
||||
#define GIMP_IS_VIEWABLE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_VIEWABLE))
|
||||
#define GIMP_IS_VIEWABLE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_VIEWABLE))
|
||||
#define GIMP_VIEWABLE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_VIEWABLE, GimpViewableClass))
|
||||
|
||||
|
||||
typedef struct _GimpViewableClass GimpViewableClass;
|
||||
|
@ -44,9 +45,11 @@ struct _GimpViewableClass
|
|||
{
|
||||
GimpObjectClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* invalidate_preview) (GimpViewable *viewable);
|
||||
void (* size_changed) (GimpViewable *viewable);
|
||||
|
||||
/* virtual functions */
|
||||
TempBuf * (* get_preview) (GimpViewable *viewable,
|
||||
gint width,
|
||||
gint height);
|
||||
|
|
|
@ -415,7 +415,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
|
|||
}
|
||||
|
||||
gtk_grab_remove (canvas);
|
||||
gdk_pointer_ungrab (bevent->time); /* fixes pointer grab bug */
|
||||
|
||||
if (active_tool && (GIMP_IS_MOVE_TOOL (active_tool) ||
|
||||
! gimp_image_is_empty (gdisp->gimage)))
|
||||
|
@ -643,12 +642,12 @@ gdisplay_canvas_events (GtkWidget *canvas,
|
|||
if (gdisp->gimage->gimp->busy)
|
||||
return TRUE;
|
||||
|
||||
/* Cursor update support */
|
||||
/* no_cursor_updating is TRUE (=1) when */
|
||||
/* <Toolbox>/File/Preferences.../Interface/... */
|
||||
/* Image Windows/Disable Cursor Updating is TOGGLED ON */
|
||||
|
||||
if (gimprc.no_cursor_updating == 0)
|
||||
/* Cursor update support
|
||||
* no_cursor_updating is TRUE (=1) when
|
||||
* <Toolbox>/File/Preferences.../Interface/...
|
||||
* Image Windows/Disable Cursor Updating is TOGGLED ON
|
||||
*/
|
||||
if (! gimprc.no_cursor_updating)
|
||||
{
|
||||
active_tool = tool_manager_get_active (gdisp->gimage->gimp);
|
||||
|
||||
|
@ -798,8 +797,8 @@ gdisplay_origin_button_press (GtkWidget *widget,
|
|||
}
|
||||
|
||||
/* Return TRUE to stop signal emission so the button doesn't grab the
|
||||
* pointer away from us. */
|
||||
|
||||
* pointer away from us.
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -912,11 +911,10 @@ gdisplay_drop_drawable (GtkWidget *widget,
|
|||
}
|
||||
|
||||
static void
|
||||
gdisplay_bucket_fill (GtkWidget *widget,
|
||||
gdisplay_bucket_fill (GDisplay *gdisp,
|
||||
BucketFillMode fill_mode,
|
||||
guchar orig_color[],
|
||||
TempBuf *orig_pat_buf,
|
||||
gpointer data)
|
||||
TempBuf *orig_pat_buf)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpDrawable *drawable;
|
||||
|
@ -932,7 +930,7 @@ gdisplay_bucket_fill (GtkWidget *widget,
|
|||
TempBuf *pat_buf = NULL;
|
||||
gboolean new_buf = FALSE;
|
||||
|
||||
gimage = ((GDisplay *) data)->gimage;
|
||||
gimage = gdisp->gimage;
|
||||
|
||||
if (gimage->gimp->busy)
|
||||
return;
|
||||
|
@ -1032,10 +1030,16 @@ gdisplay_drop_pattern (GtkWidget *widget,
|
|||
GimpViewable *viewable,
|
||||
gpointer data)
|
||||
{
|
||||
GDisplay *gdisp;
|
||||
|
||||
gdisp = (GDisplay *) data;
|
||||
|
||||
if (GIMP_IS_PATTERN (viewable))
|
||||
{
|
||||
gdisplay_bucket_fill (widget, PATTERN_BUCKET_FILL, NULL,
|
||||
GIMP_PATTERN (viewable)->mask, data);
|
||||
gdisplay_bucket_fill (gdisp,
|
||||
PATTERN_BUCKET_FILL,
|
||||
NULL,
|
||||
GIMP_PATTERN (viewable)->mask);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1044,7 +1048,10 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
const GimpRGB *drop_color,
|
||||
gpointer data)
|
||||
{
|
||||
guchar color[4];
|
||||
GDisplay *gdisp;
|
||||
guchar color[4];
|
||||
|
||||
gdisp = (GDisplay *) data;
|
||||
|
||||
gimp_rgba_get_uchar (drop_color,
|
||||
&color[0],
|
||||
|
@ -1052,7 +1059,10 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
&color[2],
|
||||
&color[3]);
|
||||
|
||||
gdisplay_bucket_fill (widget, FG_BUCKET_FILL, color, NULL, data);
|
||||
gdisplay_bucket_fill (gdisp,
|
||||
FG_BUCKET_FILL,
|
||||
color,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -415,7 +415,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
|
|||
}
|
||||
|
||||
gtk_grab_remove (canvas);
|
||||
gdk_pointer_ungrab (bevent->time); /* fixes pointer grab bug */
|
||||
|
||||
if (active_tool && (GIMP_IS_MOVE_TOOL (active_tool) ||
|
||||
! gimp_image_is_empty (gdisp->gimage)))
|
||||
|
@ -643,12 +642,12 @@ gdisplay_canvas_events (GtkWidget *canvas,
|
|||
if (gdisp->gimage->gimp->busy)
|
||||
return TRUE;
|
||||
|
||||
/* Cursor update support */
|
||||
/* no_cursor_updating is TRUE (=1) when */
|
||||
/* <Toolbox>/File/Preferences.../Interface/... */
|
||||
/* Image Windows/Disable Cursor Updating is TOGGLED ON */
|
||||
|
||||
if (gimprc.no_cursor_updating == 0)
|
||||
/* Cursor update support
|
||||
* no_cursor_updating is TRUE (=1) when
|
||||
* <Toolbox>/File/Preferences.../Interface/...
|
||||
* Image Windows/Disable Cursor Updating is TOGGLED ON
|
||||
*/
|
||||
if (! gimprc.no_cursor_updating)
|
||||
{
|
||||
active_tool = tool_manager_get_active (gdisp->gimage->gimp);
|
||||
|
||||
|
@ -798,8 +797,8 @@ gdisplay_origin_button_press (GtkWidget *widget,
|
|||
}
|
||||
|
||||
/* Return TRUE to stop signal emission so the button doesn't grab the
|
||||
* pointer away from us. */
|
||||
|
||||
* pointer away from us.
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -912,11 +911,10 @@ gdisplay_drop_drawable (GtkWidget *widget,
|
|||
}
|
||||
|
||||
static void
|
||||
gdisplay_bucket_fill (GtkWidget *widget,
|
||||
gdisplay_bucket_fill (GDisplay *gdisp,
|
||||
BucketFillMode fill_mode,
|
||||
guchar orig_color[],
|
||||
TempBuf *orig_pat_buf,
|
||||
gpointer data)
|
||||
TempBuf *orig_pat_buf)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpDrawable *drawable;
|
||||
|
@ -932,7 +930,7 @@ gdisplay_bucket_fill (GtkWidget *widget,
|
|||
TempBuf *pat_buf = NULL;
|
||||
gboolean new_buf = FALSE;
|
||||
|
||||
gimage = ((GDisplay *) data)->gimage;
|
||||
gimage = gdisp->gimage;
|
||||
|
||||
if (gimage->gimp->busy)
|
||||
return;
|
||||
|
@ -1032,10 +1030,16 @@ gdisplay_drop_pattern (GtkWidget *widget,
|
|||
GimpViewable *viewable,
|
||||
gpointer data)
|
||||
{
|
||||
GDisplay *gdisp;
|
||||
|
||||
gdisp = (GDisplay *) data;
|
||||
|
||||
if (GIMP_IS_PATTERN (viewable))
|
||||
{
|
||||
gdisplay_bucket_fill (widget, PATTERN_BUCKET_FILL, NULL,
|
||||
GIMP_PATTERN (viewable)->mask, data);
|
||||
gdisplay_bucket_fill (gdisp,
|
||||
PATTERN_BUCKET_FILL,
|
||||
NULL,
|
||||
GIMP_PATTERN (viewable)->mask);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1044,7 +1048,10 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
const GimpRGB *drop_color,
|
||||
gpointer data)
|
||||
{
|
||||
guchar color[4];
|
||||
GDisplay *gdisp;
|
||||
guchar color[4];
|
||||
|
||||
gdisp = (GDisplay *) data;
|
||||
|
||||
gimp_rgba_get_uchar (drop_color,
|
||||
&color[0],
|
||||
|
@ -1052,7 +1059,10 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
&color[2],
|
||||
&color[3]);
|
||||
|
||||
gdisplay_bucket_fill (widget, FG_BUCKET_FILL, color, NULL, data);
|
||||
gdisplay_bucket_fill (gdisp,
|
||||
FG_BUCKET_FILL,
|
||||
color,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
|
@ -415,7 +415,6 @@ gdisplay_canvas_events (GtkWidget *canvas,
|
|||
}
|
||||
|
||||
gtk_grab_remove (canvas);
|
||||
gdk_pointer_ungrab (bevent->time); /* fixes pointer grab bug */
|
||||
|
||||
if (active_tool && (GIMP_IS_MOVE_TOOL (active_tool) ||
|
||||
! gimp_image_is_empty (gdisp->gimage)))
|
||||
|
@ -643,12 +642,12 @@ gdisplay_canvas_events (GtkWidget *canvas,
|
|||
if (gdisp->gimage->gimp->busy)
|
||||
return TRUE;
|
||||
|
||||
/* Cursor update support */
|
||||
/* no_cursor_updating is TRUE (=1) when */
|
||||
/* <Toolbox>/File/Preferences.../Interface/... */
|
||||
/* Image Windows/Disable Cursor Updating is TOGGLED ON */
|
||||
|
||||
if (gimprc.no_cursor_updating == 0)
|
||||
/* Cursor update support
|
||||
* no_cursor_updating is TRUE (=1) when
|
||||
* <Toolbox>/File/Preferences.../Interface/...
|
||||
* Image Windows/Disable Cursor Updating is TOGGLED ON
|
||||
*/
|
||||
if (! gimprc.no_cursor_updating)
|
||||
{
|
||||
active_tool = tool_manager_get_active (gdisp->gimage->gimp);
|
||||
|
||||
|
@ -798,8 +797,8 @@ gdisplay_origin_button_press (GtkWidget *widget,
|
|||
}
|
||||
|
||||
/* Return TRUE to stop signal emission so the button doesn't grab the
|
||||
* pointer away from us. */
|
||||
|
||||
* pointer away from us.
|
||||
*/
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -912,11 +911,10 @@ gdisplay_drop_drawable (GtkWidget *widget,
|
|||
}
|
||||
|
||||
static void
|
||||
gdisplay_bucket_fill (GtkWidget *widget,
|
||||
gdisplay_bucket_fill (GDisplay *gdisp,
|
||||
BucketFillMode fill_mode,
|
||||
guchar orig_color[],
|
||||
TempBuf *orig_pat_buf,
|
||||
gpointer data)
|
||||
TempBuf *orig_pat_buf)
|
||||
{
|
||||
GimpImage *gimage;
|
||||
GimpDrawable *drawable;
|
||||
|
@ -932,7 +930,7 @@ gdisplay_bucket_fill (GtkWidget *widget,
|
|||
TempBuf *pat_buf = NULL;
|
||||
gboolean new_buf = FALSE;
|
||||
|
||||
gimage = ((GDisplay *) data)->gimage;
|
||||
gimage = gdisp->gimage;
|
||||
|
||||
if (gimage->gimp->busy)
|
||||
return;
|
||||
|
@ -1032,10 +1030,16 @@ gdisplay_drop_pattern (GtkWidget *widget,
|
|||
GimpViewable *viewable,
|
||||
gpointer data)
|
||||
{
|
||||
GDisplay *gdisp;
|
||||
|
||||
gdisp = (GDisplay *) data;
|
||||
|
||||
if (GIMP_IS_PATTERN (viewable))
|
||||
{
|
||||
gdisplay_bucket_fill (widget, PATTERN_BUCKET_FILL, NULL,
|
||||
GIMP_PATTERN (viewable)->mask, data);
|
||||
gdisplay_bucket_fill (gdisp,
|
||||
PATTERN_BUCKET_FILL,
|
||||
NULL,
|
||||
GIMP_PATTERN (viewable)->mask);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1044,7 +1048,10 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
const GimpRGB *drop_color,
|
||||
gpointer data)
|
||||
{
|
||||
guchar color[4];
|
||||
GDisplay *gdisp;
|
||||
guchar color[4];
|
||||
|
||||
gdisp = (GDisplay *) data;
|
||||
|
||||
gimp_rgba_get_uchar (drop_color,
|
||||
&color[0],
|
||||
|
@ -1052,7 +1059,10 @@ gdisplay_drop_color (GtkWidget *widget,
|
|||
&color[2],
|
||||
&color[3]);
|
||||
|
||||
gdisplay_bucket_fill (widget, FG_BUCKET_FILL, color, NULL, data);
|
||||
gdisplay_bucket_fill (gdisp,
|
||||
FG_BUCKET_FILL,
|
||||
color,
|
||||
NULL);
|
||||
}
|
||||
|
||||
void
|
||||
|
|
563
app/gui/menus.c
563
app/gui/menus.c
|
@ -83,6 +83,14 @@ static void menus_create_items (GtkItemFactory *item_factory,
|
|||
guint callback_type,
|
||||
gboolean create_tearoff,
|
||||
gboolean static_entries);
|
||||
static GtkItemFactory * menus_item_factory_new
|
||||
(GtkType container_type,
|
||||
const gchar *path,
|
||||
const gchar *factory_path,
|
||||
guint n_entries,
|
||||
GimpItemFactoryEntry *entries,
|
||||
gpointer callback_data,
|
||||
gboolean create_tearoff);
|
||||
static void menus_create_branches (GtkItemFactory *item_factory,
|
||||
GimpItemFactoryEntry *entry);
|
||||
static void menus_init (void);
|
||||
|
@ -306,9 +314,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
|
|||
NULL, NULL }
|
||||
#endif
|
||||
};
|
||||
static guint n_toolbox_entries = (sizeof (toolbox_entries) /
|
||||
sizeof (toolbox_entries[0]));
|
||||
static GtkItemFactory *toolbox_factory = NULL;
|
||||
|
||||
|
||||
/***** <Image> *****/
|
||||
|
@ -434,11 +439,13 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
NULL,
|
||||
"edit/clear.html", NULL },
|
||||
{ { N_("/Edit/Fill with FG Color"), "<control>comma",
|
||||
edit_fill_cmd_callback, (guint) FOREGROUND_FILL },
|
||||
edit_fill_cmd_callback, (guint) FOREGROUND_FILL,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_BUCKET_FILL },
|
||||
NULL,
|
||||
"edit/fill.html", NULL },
|
||||
{ { N_("/Edit/Fill with BG Color"), "<control>period",
|
||||
edit_fill_cmd_callback, (guint) BACKGROUND_FILL },
|
||||
edit_fill_cmd_callback, (guint) BACKGROUND_FILL,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_BUCKET_FILL },
|
||||
NULL,
|
||||
"edit/fill.html", NULL },
|
||||
{ { N_("/Edit/Stroke"), NULL,
|
||||
|
@ -513,16 +520,24 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
|
||||
/* <Image>/View/Zoom */
|
||||
|
||||
{ { N_("/View/Zoom/16:1"), NULL, view_zoom_cmd_callback, 1601 },
|
||||
{ { N_("/View/Zoom/16:1"), NULL,
|
||||
view_zoom_cmd_callback, 1601,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/8:1"), NULL, view_zoom_cmd_callback, 801 },
|
||||
{ { N_("/View/Zoom/8:1"), NULL,
|
||||
view_zoom_cmd_callback, 801,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/4:1"), NULL, view_zoom_cmd_callback, 401 },
|
||||
{ { N_("/View/Zoom/4:1"), NULL,
|
||||
view_zoom_cmd_callback, 401,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/2:1"), NULL, view_zoom_cmd_callback, 201 },
|
||||
{ { N_("/View/Zoom/2:1"), NULL,
|
||||
view_zoom_cmd_callback, 201,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:1"), "1",
|
||||
|
@ -530,16 +545,24 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
"<StockItem>", GTK_STOCK_ZOOM_100 },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:2"), NULL, view_zoom_cmd_callback, 102 },
|
||||
{ { N_("/View/Zoom/1:2"), NULL,
|
||||
view_zoom_cmd_callback, 102,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:4"), NULL, view_zoom_cmd_callback, 104 },
|
||||
{ { N_("/View/Zoom/1:4"), NULL,
|
||||
view_zoom_cmd_callback, 104,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:8"), NULL, view_zoom_cmd_callback, 108 },
|
||||
{ { N_("/View/Zoom/1:8"), NULL,
|
||||
view_zoom_cmd_callback, 108,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:16"), NULL, view_zoom_cmd_callback, 116 },
|
||||
{ { N_("/View/Zoom/1:16"), NULL,
|
||||
view_zoom_cmd_callback, 116,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
|
||||
|
@ -551,11 +574,13 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
SEPARATOR ("/View/---"),
|
||||
|
||||
{ { N_("/View/Info Window..."), "<control><shift>I",
|
||||
view_info_window_cmd_callback, 0 },
|
||||
view_info_window_cmd_callback, 0,
|
||||
"<StockItem>", GTK_STOCK_HELP },
|
||||
NULL,
|
||||
"view/dialogs/info_window.html", NULL },
|
||||
{ { N_("/View/Nav. Window..."), "<control><shift>N",
|
||||
view_nav_window_cmd_callback, 0 },
|
||||
view_nav_window_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_MOVE },
|
||||
NULL,
|
||||
"view/dialogs/navigation_window.html", NULL },
|
||||
|
||||
|
@ -585,7 +610,8 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
SEPARATOR ("/View/---"),
|
||||
|
||||
{ { N_("/View/New View"), NULL,
|
||||
view_new_view_cmd_callback, 0 },
|
||||
view_new_view_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_NEW },
|
||||
NULL,
|
||||
"view/new_view.html", NULL },
|
||||
{ { N_("/View/Shrink Wrap"), "<control>E",
|
||||
|
@ -660,7 +686,8 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
NULL,
|
||||
"image/dialogs/set_canvas_size.html", NULL },
|
||||
{ { N_("/Image/Scale Image..."), NULL,
|
||||
image_scale_cmd_callback, 0 },
|
||||
image_scale_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_SCALE },
|
||||
NULL,
|
||||
"image/dialogs/scale_image.html", NULL },
|
||||
{ { N_("/Image/Duplicate"), "<control>D",
|
||||
|
@ -897,9 +924,6 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
|
||||
BRANCH (N_("/Filters/Toys"))
|
||||
};
|
||||
static guint n_image_entries = (sizeof (image_entries) /
|
||||
sizeof (image_entries[0]));
|
||||
static GtkItemFactory *image_factory = NULL;
|
||||
|
||||
|
||||
/***** <Load> *****/
|
||||
|
@ -913,9 +937,6 @@ static GimpItemFactoryEntry load_entries[] =
|
|||
|
||||
SEPARATOR ("/---")
|
||||
};
|
||||
static guint n_load_entries = (sizeof (load_entries) /
|
||||
sizeof (load_entries[0]));
|
||||
static GtkItemFactory *load_factory = NULL;
|
||||
|
||||
|
||||
/***** <Save> *****/
|
||||
|
@ -929,9 +950,6 @@ static GimpItemFactoryEntry save_entries[] =
|
|||
|
||||
SEPARATOR ("/---")
|
||||
};
|
||||
static guint n_save_entries = (sizeof (save_entries) /
|
||||
sizeof (save_entries[0]));
|
||||
static GtkItemFactory *save_factory = NULL;
|
||||
|
||||
|
||||
/***** <Layers> *****/
|
||||
|
@ -994,7 +1012,8 @@ static GimpItemFactoryEntry layers_entries[] =
|
|||
NULL,
|
||||
"layer_to_image_size.html", NULL },
|
||||
{ { N_("/Scale Layer..."), "<control>S",
|
||||
layers_scale_cmd_callback, 0 },
|
||||
layers_scale_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_SCALE },
|
||||
NULL,
|
||||
"dialogs/scale_layer.html", NULL },
|
||||
|
||||
|
@ -1051,9 +1070,6 @@ static GimpItemFactoryEntry layers_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_layer_attributes.html", NULL }
|
||||
};
|
||||
static guint n_layers_entries = (sizeof (layers_entries) /
|
||||
sizeof (layers_entries[0]));
|
||||
static GtkItemFactory *layers_factory = NULL;
|
||||
|
||||
|
||||
/***** <Channels> *****/
|
||||
|
@ -1120,9 +1136,6 @@ static GimpItemFactoryEntry channels_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_channel_attributes.html", NULL }
|
||||
};
|
||||
static guint n_channels_entries = (sizeof (channels_entries) /
|
||||
sizeof (channels_entries[0]));
|
||||
static GtkItemFactory *channels_factory = NULL;
|
||||
|
||||
|
||||
/***** <Paths> *****/
|
||||
|
@ -1191,9 +1204,6 @@ static GimpItemFactoryEntry paths_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_path_attributes.html", NULL }
|
||||
};
|
||||
static guint n_paths_entries = (sizeof (paths_entries) /
|
||||
sizeof (paths_entries[0]));
|
||||
static GtkItemFactory *paths_factory = NULL;
|
||||
|
||||
|
||||
/***** <Dialogs> *****/
|
||||
|
@ -1319,9 +1329,6 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||
NULL, NULL }
|
||||
|
||||
};
|
||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||
sizeof (dialogs_entries[0]));
|
||||
static GtkItemFactory *dialogs_factory = NULL;
|
||||
|
||||
|
||||
/***** <Brushes> *****/
|
||||
|
@ -1357,9 +1364,6 @@ static GimpItemFactoryEntry brushes_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_brushes_entries = (sizeof (brushes_entries) /
|
||||
sizeof (brushes_entries[0]));
|
||||
static GtkItemFactory *brushes_factory = NULL;
|
||||
|
||||
|
||||
/***** <Patterns> *****/
|
||||
|
@ -1395,9 +1399,6 @@ static GimpItemFactoryEntry patterns_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_patterns_entries = (sizeof (patterns_entries) /
|
||||
sizeof (patterns_entries[0]));
|
||||
static GtkItemFactory *patterns_factory = NULL;
|
||||
|
||||
|
||||
/***** <Gradients> *****/
|
||||
|
@ -1441,9 +1442,6 @@ static GimpItemFactoryEntry gradients_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_gradients_entries = (sizeof (gradients_entries) /
|
||||
sizeof (gradients_entries[0]));
|
||||
static GtkItemFactory *gradients_factory = NULL;
|
||||
|
||||
|
||||
/***** <Palettes> *****/
|
||||
|
@ -1491,19 +1489,92 @@ static GimpItemFactoryEntry palettes_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_palettes_entries = (sizeof (palettes_entries) /
|
||||
sizeof (palettes_entries[0]));
|
||||
static GtkItemFactory *palettes_factory = NULL;
|
||||
|
||||
|
||||
static gboolean menus_initialized = FALSE;
|
||||
|
||||
|
||||
static GtkItemFactory *toolbox_factory = NULL;
|
||||
static GtkItemFactory *image_factory = NULL;
|
||||
static GtkItemFactory *load_factory = NULL;
|
||||
static GtkItemFactory *save_factory = NULL;
|
||||
static GtkItemFactory *layers_factory = NULL;
|
||||
static GtkItemFactory *channels_factory = NULL;
|
||||
static GtkItemFactory *paths_factory = NULL;
|
||||
static GtkItemFactory *dialogs_factory = NULL;
|
||||
static GtkItemFactory *brushes_factory = NULL;
|
||||
static GtkItemFactory *patterns_factory = NULL;
|
||||
static GtkItemFactory *gradients_factory = NULL;
|
||||
static GtkItemFactory *palettes_factory = NULL;
|
||||
|
||||
|
||||
GtkItemFactory *
|
||||
menus_get_toolbox_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! toolbox_factory)
|
||||
{
|
||||
GimpItemFactoryEntry *last_opened_entries;
|
||||
GtkWidget *menu_item;
|
||||
gint i;
|
||||
|
||||
toolbox_factory = menus_item_factory_new (GTK_TYPE_MENU_BAR,
|
||||
"<Toolbox>", "toolbox",
|
||||
G_N_ELEMENTS (toolbox_entries),
|
||||
toolbox_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
last_opened_entries = g_new (GimpItemFactoryEntry,
|
||||
gimprc.last_opened_size);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
last_opened_entries[i].entry.path =
|
||||
g_strdup_printf ("/File/MRU%02d", i + 1);
|
||||
|
||||
if (i < 9)
|
||||
last_opened_entries[i].entry.accelerator =
|
||||
g_strdup_printf ("<control>%d", i + 1);
|
||||
else
|
||||
last_opened_entries[i].entry.accelerator = NULL;
|
||||
|
||||
last_opened_entries[i].entry.callback = file_last_opened_cmd_callback;
|
||||
last_opened_entries[i].entry.callback_action = i;
|
||||
last_opened_entries[i].entry.item_type = "<StockItem>";
|
||||
last_opened_entries[i].entry.extra_data = GTK_STOCK_OPEN;
|
||||
last_opened_entries[i].quark_string = NULL;
|
||||
last_opened_entries[i].help_page = "file/last_opened.html";
|
||||
last_opened_entries[i].description = NULL;
|
||||
}
|
||||
|
||||
menus_create_items (toolbox_factory, gimprc.last_opened_size,
|
||||
last_opened_entries, NULL, 2, TRUE, FALSE);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
menu_item =
|
||||
gtk_item_factory_get_widget (toolbox_factory,
|
||||
last_opened_entries[i].entry.path);
|
||||
gtk_widget_hide (menu_item);
|
||||
}
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/---MRU");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
gtk_widget_hide (menu_item);
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/Quit");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
g_free (last_opened_entries[i].entry.path);
|
||||
g_free (last_opened_entries[i].entry.accelerator);
|
||||
}
|
||||
|
||||
g_free (last_opened_entries);
|
||||
}
|
||||
|
||||
return toolbox_factory;
|
||||
}
|
||||
|
@ -1511,8 +1582,15 @@ menus_get_toolbox_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_image_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! image_factory)
|
||||
{
|
||||
image_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Image>", "image",
|
||||
G_N_ELEMENTS (image_entries),
|
||||
image_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
}
|
||||
|
||||
return image_factory;
|
||||
}
|
||||
|
@ -1520,8 +1598,15 @@ menus_get_image_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_load_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! load_factory)
|
||||
{
|
||||
load_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Load>", "open",
|
||||
G_N_ELEMENTS (load_entries),
|
||||
load_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return load_factory;
|
||||
}
|
||||
|
@ -1529,8 +1614,15 @@ menus_get_load_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_save_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! save_factory)
|
||||
{
|
||||
save_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Save>", "save",
|
||||
G_N_ELEMENTS (save_entries),
|
||||
save_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return save_factory;
|
||||
}
|
||||
|
@ -1538,8 +1630,15 @@ menus_get_save_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_layers_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! layers_factory)
|
||||
{
|
||||
layers_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Layers>", "layers",
|
||||
G_N_ELEMENTS (layers_entries),
|
||||
layers_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return layers_factory;
|
||||
}
|
||||
|
@ -1547,8 +1646,15 @@ menus_get_layers_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_channels_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! channels_factory)
|
||||
{
|
||||
channels_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Channels>", "channels",
|
||||
G_N_ELEMENTS (channels_entries),
|
||||
channels_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return channels_factory;
|
||||
}
|
||||
|
@ -1556,8 +1662,15 @@ menus_get_channels_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_paths_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! paths_factory)
|
||||
{
|
||||
paths_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Paths>", "paths",
|
||||
G_N_ELEMENTS (paths_entries),
|
||||
paths_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return paths_factory;
|
||||
}
|
||||
|
@ -1565,8 +1678,15 @@ menus_get_paths_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_dialogs_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! dialogs_factory)
|
||||
{
|
||||
dialogs_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Dialogs>", "dialogs",
|
||||
G_N_ELEMENTS (dialogs_entries),
|
||||
dialogs_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return dialogs_factory;
|
||||
}
|
||||
|
@ -1574,8 +1694,15 @@ menus_get_dialogs_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_brushes_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! brushes_factory)
|
||||
{
|
||||
brushes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Brushes>", "brushes",
|
||||
G_N_ELEMENTS (brushes_entries),
|
||||
brushes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return brushes_factory;
|
||||
}
|
||||
|
@ -1583,8 +1710,15 @@ menus_get_brushes_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_patterns_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! patterns_factory)
|
||||
{
|
||||
patterns_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Patterns>", "patterns",
|
||||
G_N_ELEMENTS (patterns_entries),
|
||||
patterns_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return patterns_factory;
|
||||
}
|
||||
|
@ -1592,8 +1726,15 @@ menus_get_patterns_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_gradients_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! gradients_factory)
|
||||
{
|
||||
gradients_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Gradients>", "gradients",
|
||||
G_N_ELEMENTS (gradients_entries),
|
||||
gradients_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return gradients_factory;
|
||||
}
|
||||
|
@ -1601,13 +1742,19 @@ menus_get_gradients_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_palettes_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! palettes_factory)
|
||||
{
|
||||
palettes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Palettes>", "palettes",
|
||||
G_N_ELEMENTS (palettes_entries),
|
||||
palettes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return palettes_factory;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
|
||||
gchar *domain_name,
|
||||
|
@ -2036,32 +2183,6 @@ menus_destroy (gchar *path)
|
|||
gtk_item_factories_path_delete (NULL, path);
|
||||
}
|
||||
|
||||
void
|
||||
menus_quit (void)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gimp_personal_rc_file ("menurc");
|
||||
gtk_item_factory_dump_rc (filename, NULL, TRUE);
|
||||
g_free (filename);
|
||||
|
||||
if (menus_initialized)
|
||||
{
|
||||
g_object_unref (G_OBJECT (toolbox_factory));
|
||||
g_object_unref (G_OBJECT (image_factory));
|
||||
g_object_unref (G_OBJECT (load_factory));
|
||||
g_object_unref (G_OBJECT (save_factory));
|
||||
g_object_unref (G_OBJECT (layers_factory));
|
||||
g_object_unref (G_OBJECT (channels_factory));
|
||||
g_object_unref (G_OBJECT (paths_factory));
|
||||
g_object_unref (G_OBJECT (dialogs_factory));
|
||||
g_object_unref (G_OBJECT (brushes_factory));
|
||||
g_object_unref (G_OBJECT (patterns_factory));
|
||||
g_object_unref (G_OBJECT (gradients_factory));
|
||||
g_object_unref (G_OBJECT (palettes_factory));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
menus_last_opened_update_labels (void)
|
||||
{
|
||||
|
@ -2166,64 +2287,6 @@ menus_last_opened_add (const gchar *filename)
|
|||
menus_last_opened_update_labels ();
|
||||
}
|
||||
|
||||
static void
|
||||
menus_init_mru (void)
|
||||
{
|
||||
GimpItemFactoryEntry *last_opened_entries;
|
||||
GtkWidget *menu_item;
|
||||
gint i;
|
||||
|
||||
last_opened_entries = g_new (GimpItemFactoryEntry, gimprc.last_opened_size);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
last_opened_entries[i].entry.path =
|
||||
g_strdup_printf ("/File/MRU%02d", i + 1);
|
||||
|
||||
if (i < 9)
|
||||
last_opened_entries[i].entry.accelerator =
|
||||
g_strdup_printf ("<control>%d", i + 1);
|
||||
else
|
||||
last_opened_entries[i].entry.accelerator = NULL;
|
||||
|
||||
last_opened_entries[i].entry.callback = file_last_opened_cmd_callback;
|
||||
last_opened_entries[i].entry.callback_action = i;
|
||||
last_opened_entries[i].entry.item_type = "<StockItem>";
|
||||
last_opened_entries[i].entry.extra_data = GTK_STOCK_OPEN;
|
||||
last_opened_entries[i].quark_string = NULL;
|
||||
last_opened_entries[i].help_page = "file/last_opened.html";
|
||||
last_opened_entries[i].description = NULL;
|
||||
}
|
||||
|
||||
menus_create_items (toolbox_factory, gimprc.last_opened_size,
|
||||
last_opened_entries, NULL, 2, TRUE, FALSE);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
menu_item =
|
||||
gtk_item_factory_get_widget (toolbox_factory,
|
||||
last_opened_entries[i].entry.path);
|
||||
gtk_widget_hide (menu_item);
|
||||
}
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/---MRU");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
gtk_widget_hide (menu_item);
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/Quit");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
g_free (last_opened_entries[i].entry.path);
|
||||
g_free (last_opened_entries[i].entry.accelerator);
|
||||
}
|
||||
|
||||
g_free (last_opened_entries);
|
||||
}
|
||||
|
||||
/* This function gets called while browsing a menu created
|
||||
* by a GtkItemFactory
|
||||
*/
|
||||
|
@ -2454,92 +2517,18 @@ menus_init (void)
|
|||
|
||||
menus_initialized = TRUE;
|
||||
|
||||
toolbox_factory = menus_item_factory_new (GTK_TYPE_MENU_BAR,
|
||||
"<Toolbox>", "toolbox",
|
||||
n_toolbox_entries,
|
||||
toolbox_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
menus_init_mru ();
|
||||
|
||||
image_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Image>", "image",
|
||||
n_image_entries,
|
||||
image_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
load_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Load>", "open",
|
||||
n_load_entries,
|
||||
load_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
save_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Save>", "save",
|
||||
n_save_entries,
|
||||
save_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
layers_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Layers>", "layers",
|
||||
n_layers_entries,
|
||||
layers_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
channels_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Channels>", "channels",
|
||||
n_channels_entries,
|
||||
channels_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
paths_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Paths>", "paths",
|
||||
n_paths_entries,
|
||||
paths_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
dialogs_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Dialogs>", "dialogs",
|
||||
n_dialogs_entries,
|
||||
dialogs_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
brushes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Brushes>", "brushes",
|
||||
n_brushes_entries,
|
||||
brushes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
patterns_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Patterns>", "patterns",
|
||||
n_patterns_entries,
|
||||
patterns_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
gradients_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Gradients>", "gradients",
|
||||
n_gradients_entries,
|
||||
gradients_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
palettes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Palettes>", "palettes",
|
||||
n_palettes_entries,
|
||||
palettes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
toolbox_factory = menus_get_toolbox_factory ();
|
||||
image_factory = menus_get_image_factory ();
|
||||
load_factory = menus_get_load_factory ();
|
||||
save_factory = menus_get_save_factory ();
|
||||
layers_factory = menus_get_layers_factory ();
|
||||
channels_factory = menus_get_channels_factory ();
|
||||
paths_factory = menus_get_paths_factory ();
|
||||
dialogs_factory = menus_get_dialogs_factory ();
|
||||
brushes_factory = menus_get_brushes_factory ();
|
||||
patterns_factory = menus_get_patterns_factory ();
|
||||
gradients_factory = menus_get_gradients_factory ();
|
||||
palettes_factory = menus_get_palettes_factory ();
|
||||
|
||||
for (list = GIMP_LIST (the_gimp->tool_info_list)->list;
|
||||
list;
|
||||
|
@ -2597,6 +2586,88 @@ menus_init (void)
|
|||
g_free (filename);
|
||||
}
|
||||
|
||||
void
|
||||
menus_quit (void)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gimp_personal_rc_file ("menurc");
|
||||
gtk_item_factory_dump_rc (filename, NULL, TRUE);
|
||||
g_free (filename);
|
||||
|
||||
if (toolbox_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (toolbox_factory));
|
||||
toolbox_factory = NULL;
|
||||
}
|
||||
|
||||
if (image_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (image_factory));
|
||||
image_factory = NULL;
|
||||
}
|
||||
|
||||
if (load_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (load_factory));
|
||||
load_factory = NULL;
|
||||
}
|
||||
|
||||
if (save_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (save_factory));
|
||||
save_factory = NULL;
|
||||
}
|
||||
|
||||
if (layers_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (layers_factory));
|
||||
layers_factory = NULL;
|
||||
}
|
||||
|
||||
if (channels_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (channels_factory));
|
||||
channels_factory = NULL;
|
||||
}
|
||||
|
||||
if (paths_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (paths_factory));
|
||||
paths_factory = NULL;
|
||||
}
|
||||
|
||||
if (dialogs_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (dialogs_factory));
|
||||
dialogs_factory = NULL;
|
||||
}
|
||||
|
||||
if (brushes_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (brushes_factory));
|
||||
brushes_factory = NULL;
|
||||
}
|
||||
|
||||
if (patterns_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (patterns_factory));
|
||||
patterns_factory = NULL;
|
||||
}
|
||||
|
||||
if (gradients_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (gradients_factory));
|
||||
gradients_factory = NULL;
|
||||
}
|
||||
|
||||
if (palettes_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (palettes_factory));
|
||||
palettes_factory = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
|
||||
static gchar *
|
||||
|
|
|
@ -83,6 +83,14 @@ static void menus_create_items (GtkItemFactory *item_factory,
|
|||
guint callback_type,
|
||||
gboolean create_tearoff,
|
||||
gboolean static_entries);
|
||||
static GtkItemFactory * menus_item_factory_new
|
||||
(GtkType container_type,
|
||||
const gchar *path,
|
||||
const gchar *factory_path,
|
||||
guint n_entries,
|
||||
GimpItemFactoryEntry *entries,
|
||||
gpointer callback_data,
|
||||
gboolean create_tearoff);
|
||||
static void menus_create_branches (GtkItemFactory *item_factory,
|
||||
GimpItemFactoryEntry *entry);
|
||||
static void menus_init (void);
|
||||
|
@ -306,9 +314,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
|
|||
NULL, NULL }
|
||||
#endif
|
||||
};
|
||||
static guint n_toolbox_entries = (sizeof (toolbox_entries) /
|
||||
sizeof (toolbox_entries[0]));
|
||||
static GtkItemFactory *toolbox_factory = NULL;
|
||||
|
||||
|
||||
/***** <Image> *****/
|
||||
|
@ -434,11 +439,13 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
NULL,
|
||||
"edit/clear.html", NULL },
|
||||
{ { N_("/Edit/Fill with FG Color"), "<control>comma",
|
||||
edit_fill_cmd_callback, (guint) FOREGROUND_FILL },
|
||||
edit_fill_cmd_callback, (guint) FOREGROUND_FILL,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_BUCKET_FILL },
|
||||
NULL,
|
||||
"edit/fill.html", NULL },
|
||||
{ { N_("/Edit/Fill with BG Color"), "<control>period",
|
||||
edit_fill_cmd_callback, (guint) BACKGROUND_FILL },
|
||||
edit_fill_cmd_callback, (guint) BACKGROUND_FILL,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_BUCKET_FILL },
|
||||
NULL,
|
||||
"edit/fill.html", NULL },
|
||||
{ { N_("/Edit/Stroke"), NULL,
|
||||
|
@ -513,16 +520,24 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
|
||||
/* <Image>/View/Zoom */
|
||||
|
||||
{ { N_("/View/Zoom/16:1"), NULL, view_zoom_cmd_callback, 1601 },
|
||||
{ { N_("/View/Zoom/16:1"), NULL,
|
||||
view_zoom_cmd_callback, 1601,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/8:1"), NULL, view_zoom_cmd_callback, 801 },
|
||||
{ { N_("/View/Zoom/8:1"), NULL,
|
||||
view_zoom_cmd_callback, 801,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/4:1"), NULL, view_zoom_cmd_callback, 401 },
|
||||
{ { N_("/View/Zoom/4:1"), NULL,
|
||||
view_zoom_cmd_callback, 401,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/2:1"), NULL, view_zoom_cmd_callback, 201 },
|
||||
{ { N_("/View/Zoom/2:1"), NULL,
|
||||
view_zoom_cmd_callback, 201,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:1"), "1",
|
||||
|
@ -530,16 +545,24 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
"<StockItem>", GTK_STOCK_ZOOM_100 },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:2"), NULL, view_zoom_cmd_callback, 102 },
|
||||
{ { N_("/View/Zoom/1:2"), NULL,
|
||||
view_zoom_cmd_callback, 102,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:4"), NULL, view_zoom_cmd_callback, 104 },
|
||||
{ { N_("/View/Zoom/1:4"), NULL,
|
||||
view_zoom_cmd_callback, 104,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:8"), NULL, view_zoom_cmd_callback, 108 },
|
||||
{ { N_("/View/Zoom/1:8"), NULL,
|
||||
view_zoom_cmd_callback, 108,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:16"), NULL, view_zoom_cmd_callback, 116 },
|
||||
{ { N_("/View/Zoom/1:16"), NULL,
|
||||
view_zoom_cmd_callback, 116,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
|
||||
|
@ -551,11 +574,13 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
SEPARATOR ("/View/---"),
|
||||
|
||||
{ { N_("/View/Info Window..."), "<control><shift>I",
|
||||
view_info_window_cmd_callback, 0 },
|
||||
view_info_window_cmd_callback, 0,
|
||||
"<StockItem>", GTK_STOCK_HELP },
|
||||
NULL,
|
||||
"view/dialogs/info_window.html", NULL },
|
||||
{ { N_("/View/Nav. Window..."), "<control><shift>N",
|
||||
view_nav_window_cmd_callback, 0 },
|
||||
view_nav_window_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_MOVE },
|
||||
NULL,
|
||||
"view/dialogs/navigation_window.html", NULL },
|
||||
|
||||
|
@ -585,7 +610,8 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
SEPARATOR ("/View/---"),
|
||||
|
||||
{ { N_("/View/New View"), NULL,
|
||||
view_new_view_cmd_callback, 0 },
|
||||
view_new_view_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_NEW },
|
||||
NULL,
|
||||
"view/new_view.html", NULL },
|
||||
{ { N_("/View/Shrink Wrap"), "<control>E",
|
||||
|
@ -660,7 +686,8 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
NULL,
|
||||
"image/dialogs/set_canvas_size.html", NULL },
|
||||
{ { N_("/Image/Scale Image..."), NULL,
|
||||
image_scale_cmd_callback, 0 },
|
||||
image_scale_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_SCALE },
|
||||
NULL,
|
||||
"image/dialogs/scale_image.html", NULL },
|
||||
{ { N_("/Image/Duplicate"), "<control>D",
|
||||
|
@ -897,9 +924,6 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
|
||||
BRANCH (N_("/Filters/Toys"))
|
||||
};
|
||||
static guint n_image_entries = (sizeof (image_entries) /
|
||||
sizeof (image_entries[0]));
|
||||
static GtkItemFactory *image_factory = NULL;
|
||||
|
||||
|
||||
/***** <Load> *****/
|
||||
|
@ -913,9 +937,6 @@ static GimpItemFactoryEntry load_entries[] =
|
|||
|
||||
SEPARATOR ("/---")
|
||||
};
|
||||
static guint n_load_entries = (sizeof (load_entries) /
|
||||
sizeof (load_entries[0]));
|
||||
static GtkItemFactory *load_factory = NULL;
|
||||
|
||||
|
||||
/***** <Save> *****/
|
||||
|
@ -929,9 +950,6 @@ static GimpItemFactoryEntry save_entries[] =
|
|||
|
||||
SEPARATOR ("/---")
|
||||
};
|
||||
static guint n_save_entries = (sizeof (save_entries) /
|
||||
sizeof (save_entries[0]));
|
||||
static GtkItemFactory *save_factory = NULL;
|
||||
|
||||
|
||||
/***** <Layers> *****/
|
||||
|
@ -994,7 +1012,8 @@ static GimpItemFactoryEntry layers_entries[] =
|
|||
NULL,
|
||||
"layer_to_image_size.html", NULL },
|
||||
{ { N_("/Scale Layer..."), "<control>S",
|
||||
layers_scale_cmd_callback, 0 },
|
||||
layers_scale_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_SCALE },
|
||||
NULL,
|
||||
"dialogs/scale_layer.html", NULL },
|
||||
|
||||
|
@ -1051,9 +1070,6 @@ static GimpItemFactoryEntry layers_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_layer_attributes.html", NULL }
|
||||
};
|
||||
static guint n_layers_entries = (sizeof (layers_entries) /
|
||||
sizeof (layers_entries[0]));
|
||||
static GtkItemFactory *layers_factory = NULL;
|
||||
|
||||
|
||||
/***** <Channels> *****/
|
||||
|
@ -1120,9 +1136,6 @@ static GimpItemFactoryEntry channels_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_channel_attributes.html", NULL }
|
||||
};
|
||||
static guint n_channels_entries = (sizeof (channels_entries) /
|
||||
sizeof (channels_entries[0]));
|
||||
static GtkItemFactory *channels_factory = NULL;
|
||||
|
||||
|
||||
/***** <Paths> *****/
|
||||
|
@ -1191,9 +1204,6 @@ static GimpItemFactoryEntry paths_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_path_attributes.html", NULL }
|
||||
};
|
||||
static guint n_paths_entries = (sizeof (paths_entries) /
|
||||
sizeof (paths_entries[0]));
|
||||
static GtkItemFactory *paths_factory = NULL;
|
||||
|
||||
|
||||
/***** <Dialogs> *****/
|
||||
|
@ -1319,9 +1329,6 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||
NULL, NULL }
|
||||
|
||||
};
|
||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||
sizeof (dialogs_entries[0]));
|
||||
static GtkItemFactory *dialogs_factory = NULL;
|
||||
|
||||
|
||||
/***** <Brushes> *****/
|
||||
|
@ -1357,9 +1364,6 @@ static GimpItemFactoryEntry brushes_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_brushes_entries = (sizeof (brushes_entries) /
|
||||
sizeof (brushes_entries[0]));
|
||||
static GtkItemFactory *brushes_factory = NULL;
|
||||
|
||||
|
||||
/***** <Patterns> *****/
|
||||
|
@ -1395,9 +1399,6 @@ static GimpItemFactoryEntry patterns_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_patterns_entries = (sizeof (patterns_entries) /
|
||||
sizeof (patterns_entries[0]));
|
||||
static GtkItemFactory *patterns_factory = NULL;
|
||||
|
||||
|
||||
/***** <Gradients> *****/
|
||||
|
@ -1441,9 +1442,6 @@ static GimpItemFactoryEntry gradients_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_gradients_entries = (sizeof (gradients_entries) /
|
||||
sizeof (gradients_entries[0]));
|
||||
static GtkItemFactory *gradients_factory = NULL;
|
||||
|
||||
|
||||
/***** <Palettes> *****/
|
||||
|
@ -1491,19 +1489,92 @@ static GimpItemFactoryEntry palettes_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_palettes_entries = (sizeof (palettes_entries) /
|
||||
sizeof (palettes_entries[0]));
|
||||
static GtkItemFactory *palettes_factory = NULL;
|
||||
|
||||
|
||||
static gboolean menus_initialized = FALSE;
|
||||
|
||||
|
||||
static GtkItemFactory *toolbox_factory = NULL;
|
||||
static GtkItemFactory *image_factory = NULL;
|
||||
static GtkItemFactory *load_factory = NULL;
|
||||
static GtkItemFactory *save_factory = NULL;
|
||||
static GtkItemFactory *layers_factory = NULL;
|
||||
static GtkItemFactory *channels_factory = NULL;
|
||||
static GtkItemFactory *paths_factory = NULL;
|
||||
static GtkItemFactory *dialogs_factory = NULL;
|
||||
static GtkItemFactory *brushes_factory = NULL;
|
||||
static GtkItemFactory *patterns_factory = NULL;
|
||||
static GtkItemFactory *gradients_factory = NULL;
|
||||
static GtkItemFactory *palettes_factory = NULL;
|
||||
|
||||
|
||||
GtkItemFactory *
|
||||
menus_get_toolbox_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! toolbox_factory)
|
||||
{
|
||||
GimpItemFactoryEntry *last_opened_entries;
|
||||
GtkWidget *menu_item;
|
||||
gint i;
|
||||
|
||||
toolbox_factory = menus_item_factory_new (GTK_TYPE_MENU_BAR,
|
||||
"<Toolbox>", "toolbox",
|
||||
G_N_ELEMENTS (toolbox_entries),
|
||||
toolbox_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
last_opened_entries = g_new (GimpItemFactoryEntry,
|
||||
gimprc.last_opened_size);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
last_opened_entries[i].entry.path =
|
||||
g_strdup_printf ("/File/MRU%02d", i + 1);
|
||||
|
||||
if (i < 9)
|
||||
last_opened_entries[i].entry.accelerator =
|
||||
g_strdup_printf ("<control>%d", i + 1);
|
||||
else
|
||||
last_opened_entries[i].entry.accelerator = NULL;
|
||||
|
||||
last_opened_entries[i].entry.callback = file_last_opened_cmd_callback;
|
||||
last_opened_entries[i].entry.callback_action = i;
|
||||
last_opened_entries[i].entry.item_type = "<StockItem>";
|
||||
last_opened_entries[i].entry.extra_data = GTK_STOCK_OPEN;
|
||||
last_opened_entries[i].quark_string = NULL;
|
||||
last_opened_entries[i].help_page = "file/last_opened.html";
|
||||
last_opened_entries[i].description = NULL;
|
||||
}
|
||||
|
||||
menus_create_items (toolbox_factory, gimprc.last_opened_size,
|
||||
last_opened_entries, NULL, 2, TRUE, FALSE);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
menu_item =
|
||||
gtk_item_factory_get_widget (toolbox_factory,
|
||||
last_opened_entries[i].entry.path);
|
||||
gtk_widget_hide (menu_item);
|
||||
}
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/---MRU");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
gtk_widget_hide (menu_item);
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/Quit");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
g_free (last_opened_entries[i].entry.path);
|
||||
g_free (last_opened_entries[i].entry.accelerator);
|
||||
}
|
||||
|
||||
g_free (last_opened_entries);
|
||||
}
|
||||
|
||||
return toolbox_factory;
|
||||
}
|
||||
|
@ -1511,8 +1582,15 @@ menus_get_toolbox_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_image_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! image_factory)
|
||||
{
|
||||
image_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Image>", "image",
|
||||
G_N_ELEMENTS (image_entries),
|
||||
image_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
}
|
||||
|
||||
return image_factory;
|
||||
}
|
||||
|
@ -1520,8 +1598,15 @@ menus_get_image_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_load_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! load_factory)
|
||||
{
|
||||
load_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Load>", "open",
|
||||
G_N_ELEMENTS (load_entries),
|
||||
load_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return load_factory;
|
||||
}
|
||||
|
@ -1529,8 +1614,15 @@ menus_get_load_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_save_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! save_factory)
|
||||
{
|
||||
save_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Save>", "save",
|
||||
G_N_ELEMENTS (save_entries),
|
||||
save_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return save_factory;
|
||||
}
|
||||
|
@ -1538,8 +1630,15 @@ menus_get_save_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_layers_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! layers_factory)
|
||||
{
|
||||
layers_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Layers>", "layers",
|
||||
G_N_ELEMENTS (layers_entries),
|
||||
layers_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return layers_factory;
|
||||
}
|
||||
|
@ -1547,8 +1646,15 @@ menus_get_layers_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_channels_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! channels_factory)
|
||||
{
|
||||
channels_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Channels>", "channels",
|
||||
G_N_ELEMENTS (channels_entries),
|
||||
channels_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return channels_factory;
|
||||
}
|
||||
|
@ -1556,8 +1662,15 @@ menus_get_channels_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_paths_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! paths_factory)
|
||||
{
|
||||
paths_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Paths>", "paths",
|
||||
G_N_ELEMENTS (paths_entries),
|
||||
paths_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return paths_factory;
|
||||
}
|
||||
|
@ -1565,8 +1678,15 @@ menus_get_paths_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_dialogs_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! dialogs_factory)
|
||||
{
|
||||
dialogs_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Dialogs>", "dialogs",
|
||||
G_N_ELEMENTS (dialogs_entries),
|
||||
dialogs_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return dialogs_factory;
|
||||
}
|
||||
|
@ -1574,8 +1694,15 @@ menus_get_dialogs_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_brushes_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! brushes_factory)
|
||||
{
|
||||
brushes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Brushes>", "brushes",
|
||||
G_N_ELEMENTS (brushes_entries),
|
||||
brushes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return brushes_factory;
|
||||
}
|
||||
|
@ -1583,8 +1710,15 @@ menus_get_brushes_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_patterns_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! patterns_factory)
|
||||
{
|
||||
patterns_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Patterns>", "patterns",
|
||||
G_N_ELEMENTS (patterns_entries),
|
||||
patterns_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return patterns_factory;
|
||||
}
|
||||
|
@ -1592,8 +1726,15 @@ menus_get_patterns_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_gradients_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! gradients_factory)
|
||||
{
|
||||
gradients_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Gradients>", "gradients",
|
||||
G_N_ELEMENTS (gradients_entries),
|
||||
gradients_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return gradients_factory;
|
||||
}
|
||||
|
@ -1601,13 +1742,19 @@ menus_get_gradients_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_palettes_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! palettes_factory)
|
||||
{
|
||||
palettes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Palettes>", "palettes",
|
||||
G_N_ELEMENTS (palettes_entries),
|
||||
palettes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return palettes_factory;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
|
||||
gchar *domain_name,
|
||||
|
@ -2036,32 +2183,6 @@ menus_destroy (gchar *path)
|
|||
gtk_item_factories_path_delete (NULL, path);
|
||||
}
|
||||
|
||||
void
|
||||
menus_quit (void)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gimp_personal_rc_file ("menurc");
|
||||
gtk_item_factory_dump_rc (filename, NULL, TRUE);
|
||||
g_free (filename);
|
||||
|
||||
if (menus_initialized)
|
||||
{
|
||||
g_object_unref (G_OBJECT (toolbox_factory));
|
||||
g_object_unref (G_OBJECT (image_factory));
|
||||
g_object_unref (G_OBJECT (load_factory));
|
||||
g_object_unref (G_OBJECT (save_factory));
|
||||
g_object_unref (G_OBJECT (layers_factory));
|
||||
g_object_unref (G_OBJECT (channels_factory));
|
||||
g_object_unref (G_OBJECT (paths_factory));
|
||||
g_object_unref (G_OBJECT (dialogs_factory));
|
||||
g_object_unref (G_OBJECT (brushes_factory));
|
||||
g_object_unref (G_OBJECT (patterns_factory));
|
||||
g_object_unref (G_OBJECT (gradients_factory));
|
||||
g_object_unref (G_OBJECT (palettes_factory));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
menus_last_opened_update_labels (void)
|
||||
{
|
||||
|
@ -2166,64 +2287,6 @@ menus_last_opened_add (const gchar *filename)
|
|||
menus_last_opened_update_labels ();
|
||||
}
|
||||
|
||||
static void
|
||||
menus_init_mru (void)
|
||||
{
|
||||
GimpItemFactoryEntry *last_opened_entries;
|
||||
GtkWidget *menu_item;
|
||||
gint i;
|
||||
|
||||
last_opened_entries = g_new (GimpItemFactoryEntry, gimprc.last_opened_size);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
last_opened_entries[i].entry.path =
|
||||
g_strdup_printf ("/File/MRU%02d", i + 1);
|
||||
|
||||
if (i < 9)
|
||||
last_opened_entries[i].entry.accelerator =
|
||||
g_strdup_printf ("<control>%d", i + 1);
|
||||
else
|
||||
last_opened_entries[i].entry.accelerator = NULL;
|
||||
|
||||
last_opened_entries[i].entry.callback = file_last_opened_cmd_callback;
|
||||
last_opened_entries[i].entry.callback_action = i;
|
||||
last_opened_entries[i].entry.item_type = "<StockItem>";
|
||||
last_opened_entries[i].entry.extra_data = GTK_STOCK_OPEN;
|
||||
last_opened_entries[i].quark_string = NULL;
|
||||
last_opened_entries[i].help_page = "file/last_opened.html";
|
||||
last_opened_entries[i].description = NULL;
|
||||
}
|
||||
|
||||
menus_create_items (toolbox_factory, gimprc.last_opened_size,
|
||||
last_opened_entries, NULL, 2, TRUE, FALSE);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
menu_item =
|
||||
gtk_item_factory_get_widget (toolbox_factory,
|
||||
last_opened_entries[i].entry.path);
|
||||
gtk_widget_hide (menu_item);
|
||||
}
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/---MRU");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
gtk_widget_hide (menu_item);
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/Quit");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
g_free (last_opened_entries[i].entry.path);
|
||||
g_free (last_opened_entries[i].entry.accelerator);
|
||||
}
|
||||
|
||||
g_free (last_opened_entries);
|
||||
}
|
||||
|
||||
/* This function gets called while browsing a menu created
|
||||
* by a GtkItemFactory
|
||||
*/
|
||||
|
@ -2454,92 +2517,18 @@ menus_init (void)
|
|||
|
||||
menus_initialized = TRUE;
|
||||
|
||||
toolbox_factory = menus_item_factory_new (GTK_TYPE_MENU_BAR,
|
||||
"<Toolbox>", "toolbox",
|
||||
n_toolbox_entries,
|
||||
toolbox_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
menus_init_mru ();
|
||||
|
||||
image_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Image>", "image",
|
||||
n_image_entries,
|
||||
image_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
load_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Load>", "open",
|
||||
n_load_entries,
|
||||
load_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
save_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Save>", "save",
|
||||
n_save_entries,
|
||||
save_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
layers_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Layers>", "layers",
|
||||
n_layers_entries,
|
||||
layers_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
channels_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Channels>", "channels",
|
||||
n_channels_entries,
|
||||
channels_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
paths_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Paths>", "paths",
|
||||
n_paths_entries,
|
||||
paths_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
dialogs_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Dialogs>", "dialogs",
|
||||
n_dialogs_entries,
|
||||
dialogs_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
brushes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Brushes>", "brushes",
|
||||
n_brushes_entries,
|
||||
brushes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
patterns_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Patterns>", "patterns",
|
||||
n_patterns_entries,
|
||||
patterns_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
gradients_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Gradients>", "gradients",
|
||||
n_gradients_entries,
|
||||
gradients_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
palettes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Palettes>", "palettes",
|
||||
n_palettes_entries,
|
||||
palettes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
toolbox_factory = menus_get_toolbox_factory ();
|
||||
image_factory = menus_get_image_factory ();
|
||||
load_factory = menus_get_load_factory ();
|
||||
save_factory = menus_get_save_factory ();
|
||||
layers_factory = menus_get_layers_factory ();
|
||||
channels_factory = menus_get_channels_factory ();
|
||||
paths_factory = menus_get_paths_factory ();
|
||||
dialogs_factory = menus_get_dialogs_factory ();
|
||||
brushes_factory = menus_get_brushes_factory ();
|
||||
patterns_factory = menus_get_patterns_factory ();
|
||||
gradients_factory = menus_get_gradients_factory ();
|
||||
palettes_factory = menus_get_palettes_factory ();
|
||||
|
||||
for (list = GIMP_LIST (the_gimp->tool_info_list)->list;
|
||||
list;
|
||||
|
@ -2597,6 +2586,88 @@ menus_init (void)
|
|||
g_free (filename);
|
||||
}
|
||||
|
||||
void
|
||||
menus_quit (void)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gimp_personal_rc_file ("menurc");
|
||||
gtk_item_factory_dump_rc (filename, NULL, TRUE);
|
||||
g_free (filename);
|
||||
|
||||
if (toolbox_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (toolbox_factory));
|
||||
toolbox_factory = NULL;
|
||||
}
|
||||
|
||||
if (image_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (image_factory));
|
||||
image_factory = NULL;
|
||||
}
|
||||
|
||||
if (load_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (load_factory));
|
||||
load_factory = NULL;
|
||||
}
|
||||
|
||||
if (save_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (save_factory));
|
||||
save_factory = NULL;
|
||||
}
|
||||
|
||||
if (layers_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (layers_factory));
|
||||
layers_factory = NULL;
|
||||
}
|
||||
|
||||
if (channels_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (channels_factory));
|
||||
channels_factory = NULL;
|
||||
}
|
||||
|
||||
if (paths_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (paths_factory));
|
||||
paths_factory = NULL;
|
||||
}
|
||||
|
||||
if (dialogs_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (dialogs_factory));
|
||||
dialogs_factory = NULL;
|
||||
}
|
||||
|
||||
if (brushes_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (brushes_factory));
|
||||
brushes_factory = NULL;
|
||||
}
|
||||
|
||||
if (patterns_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (patterns_factory));
|
||||
patterns_factory = NULL;
|
||||
}
|
||||
|
||||
if (gradients_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (gradients_factory));
|
||||
gradients_factory = NULL;
|
||||
}
|
||||
|
||||
if (palettes_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (palettes_factory));
|
||||
palettes_factory = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
|
||||
static gchar *
|
||||
|
|
|
@ -2959,15 +2959,13 @@ undo_name[] =
|
|||
{ IMAGE_RESIZE_UNDO, N_("image resize") },
|
||||
{ MISC_UNDO, N_("misc") }
|
||||
};
|
||||
#define NUM_NAMES (sizeof (undo_name) / sizeof (struct undo_name_t))
|
||||
|
||||
|
||||
static const gchar *
|
||||
undo_type_to_name (UndoType type)
|
||||
{
|
||||
gint i;
|
||||
|
||||
for (i=0; i < NUM_NAMES; i++)
|
||||
for (i = 0; i < G_N_ELEMENTS (undo_name); i++)
|
||||
if (undo_name[i].type == type)
|
||||
return gettext (undo_name[i].name);
|
||||
|
||||
|
|
|
@ -36,15 +36,9 @@
|
|||
|
||||
enum
|
||||
{
|
||||
SET_CONTAINER,
|
||||
INSERT_ITEM,
|
||||
REMOVE_ITEM,
|
||||
REORDER_ITEM,
|
||||
SELECT_ITEM,
|
||||
ACTIVATE_ITEM,
|
||||
CONTEXT_ITEM,
|
||||
CLEAR_ITEMS,
|
||||
SET_PREVIEW_SIZE,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -82,10 +76,10 @@ static guint menu_signals[LAST_SIGNAL] = { 0 };
|
|||
static GtkVBoxClass *parent_class = NULL;
|
||||
|
||||
|
||||
GtkType
|
||||
GType
|
||||
gimp_container_menu_get_type (void)
|
||||
{
|
||||
static guint menu_type = 0;
|
||||
static GType menu_type = 0;
|
||||
|
||||
if (! menu_type)
|
||||
{
|
||||
|
@ -116,50 +110,6 @@ gimp_container_menu_class_init (GimpContainerMenuClass *klass)
|
|||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
menu_signals[SET_CONTAINER] =
|
||||
g_signal_new ("set_container",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpContainerMenuClass, set_container),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GIMP_TYPE_OBJECT);
|
||||
|
||||
menu_signals[INSERT_ITEM] =
|
||||
g_signal_new ("insert_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpContainerMenuClass, insert_item),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__OBJECT_INT,
|
||||
G_TYPE_POINTER, 2,
|
||||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_INT);
|
||||
|
||||
menu_signals[REMOVE_ITEM] =
|
||||
g_signal_new ("remove_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerMenuClass, remove_item),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__OBJECT_POINTER,
|
||||
G_TYPE_NONE, 2,
|
||||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
menu_signals[REORDER_ITEM] =
|
||||
g_signal_new ("reorder_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerMenuClass, reorder_item),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__OBJECT_INT_POINTER,
|
||||
G_TYPE_NONE, 3,
|
||||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
menu_signals[SELECT_ITEM] =
|
||||
g_signal_new ("select_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
|
@ -193,33 +143,16 @@ gimp_container_menu_class_init (GimpContainerMenuClass *klass)
|
|||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
menu_signals[CLEAR_ITEMS] =
|
||||
g_signal_new ("clear_items",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerMenuClass, clear_items),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
menu_signals[SET_PREVIEW_SIZE] =
|
||||
g_signal_new ("set_preview_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerMenuClass, set_preview_size),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
object_class->destroy = gimp_container_menu_destroy;
|
||||
|
||||
klass->select_item = NULL;
|
||||
klass->activate_item = NULL;
|
||||
klass->context_item = NULL;
|
||||
|
||||
klass->set_container = gimp_container_menu_real_set_container;
|
||||
klass->insert_item = NULL;
|
||||
klass->remove_item = NULL;
|
||||
klass->reorder_item = NULL;
|
||||
klass->select_item = NULL;
|
||||
klass->activate_item = NULL;
|
||||
klass->context_item = NULL;
|
||||
klass->clear_items = gimp_container_menu_real_clear_items;
|
||||
klass->set_preview_size = NULL;
|
||||
}
|
||||
|
@ -262,15 +195,13 @@ void
|
|||
gimp_container_menu_set_container (GimpContainerMenu *menu,
|
||||
GimpContainer *container)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (!container || GIMP_IS_CONTAINER (container));
|
||||
g_return_if_fail (! container || GIMP_IS_CONTAINER (container));
|
||||
|
||||
if (container == menu->container)
|
||||
return;
|
||||
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[SET_CONTAINER], 0,
|
||||
container);
|
||||
if (container != menu->container)
|
||||
{
|
||||
GIMP_CONTAINER_MENU_GET_CLASS (menu)->set_container (menu, container);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -366,9 +297,8 @@ void
|
|||
gimp_container_menu_set_context (GimpContainerMenu *menu,
|
||||
GimpContext *context)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (! context || GIMP_IS_CONTEXT (context));
|
||||
g_return_if_fail ( ! context || GIMP_IS_CONTEXT (context));
|
||||
|
||||
if (context == menu->context)
|
||||
return;
|
||||
|
@ -406,7 +336,6 @@ void
|
|||
gimp_container_menu_set_preview_size (GimpContainerMenu *menu,
|
||||
gint preview_size)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256 /* FIXME: 64 */);
|
||||
|
||||
|
@ -414,7 +343,7 @@ gimp_container_menu_set_preview_size (GimpContainerMenu *menu,
|
|||
{
|
||||
menu->preview_size = preview_size;
|
||||
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[SET_PREVIEW_SIZE], 0);
|
||||
GIMP_CONTAINER_MENU_GET_CLASS (menu)->set_preview_size (menu);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -422,7 +351,6 @@ void
|
|||
gimp_container_menu_set_name_func (GimpContainerMenu *menu,
|
||||
GimpItemGetNameFunc get_name_func)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
|
||||
if (menu->get_name_func != get_name_func)
|
||||
|
@ -437,7 +365,6 @@ gimp_container_menu_select_item (GimpContainerMenu *menu,
|
|||
{
|
||||
gpointer insert_data;
|
||||
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (! viewable || GIMP_IS_VIEWABLE (viewable));
|
||||
|
||||
|
@ -453,9 +380,7 @@ gimp_container_menu_activate_item (GimpContainerMenu *menu,
|
|||
{
|
||||
gpointer insert_data;
|
||||
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (viewable != NULL);
|
||||
g_return_if_fail (GIMP_IS_VIEWABLE (viewable));
|
||||
|
||||
insert_data = g_hash_table_lookup (menu->hash_table, viewable);
|
||||
|
@ -470,9 +395,7 @@ gimp_container_menu_context_item (GimpContainerMenu *menu,
|
|||
{
|
||||
gpointer insert_data;
|
||||
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (viewable != NULL);
|
||||
g_return_if_fail (GIMP_IS_VIEWABLE (viewable));
|
||||
|
||||
insert_data = g_hash_table_lookup (menu->hash_table, viewable);
|
||||
|
@ -485,9 +408,7 @@ void
|
|||
gimp_container_menu_item_selected (GimpContainerMenu *menu,
|
||||
GimpViewable *viewable)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (viewable != NULL);
|
||||
g_return_if_fail (GIMP_IS_VIEWABLE (viewable));
|
||||
|
||||
if (menu->container && menu->context)
|
||||
|
@ -504,9 +425,7 @@ void
|
|||
gimp_container_menu_item_activated (GimpContainerMenu *menu,
|
||||
GimpViewable *viewable)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (viewable != NULL);
|
||||
g_return_if_fail (GIMP_IS_VIEWABLE (viewable));
|
||||
|
||||
gimp_container_menu_activate_item (menu, viewable);
|
||||
|
@ -516,9 +435,7 @@ void
|
|||
gimp_container_menu_item_context (GimpContainerMenu *menu,
|
||||
GimpViewable *viewable)
|
||||
{
|
||||
g_return_if_fail (menu != NULL);
|
||||
g_return_if_fail (GIMP_IS_CONTAINER_MENU (menu));
|
||||
g_return_if_fail (viewable != NULL);
|
||||
g_return_if_fail (GIMP_IS_VIEWABLE (viewable));
|
||||
|
||||
gimp_container_menu_context_item (menu, viewable);
|
||||
|
@ -527,7 +444,7 @@ gimp_container_menu_item_context (GimpContainerMenu *menu,
|
|||
static void
|
||||
gimp_container_menu_clear_items (GimpContainerMenu *menu)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[CLEAR_ITEMS], 0);
|
||||
GIMP_CONTAINER_MENU_GET_CLASS (menu)->clear_items (menu);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -542,10 +459,11 @@ static void
|
|||
gimp_container_menu_add_foreach (GimpViewable *viewable,
|
||||
GimpContainerMenu *menu)
|
||||
{
|
||||
gpointer insert_data = NULL;
|
||||
gpointer insert_data;
|
||||
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[INSERT_ITEM], 0,
|
||||
viewable, -1, &insert_data);
|
||||
insert_data = GIMP_CONTAINER_MENU_GET_CLASS (menu)->insert_item (menu,
|
||||
viewable,
|
||||
-1);
|
||||
|
||||
g_hash_table_insert (menu->hash_table, viewable, insert_data);
|
||||
}
|
||||
|
@ -555,14 +473,15 @@ gimp_container_menu_add (GimpContainerMenu *menu,
|
|||
GimpViewable *viewable,
|
||||
GimpContainer *container)
|
||||
{
|
||||
gpointer insert_data = NULL;
|
||||
gpointer insert_data;
|
||||
gint index;
|
||||
|
||||
index = gimp_container_get_child_index (container,
|
||||
GIMP_OBJECT (viewable));
|
||||
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[INSERT_ITEM], 0,
|
||||
viewable, index, &insert_data);
|
||||
insert_data = GIMP_CONTAINER_MENU_GET_CLASS (menu)->insert_item (menu,
|
||||
viewable,
|
||||
-1);
|
||||
|
||||
g_hash_table_insert (menu->hash_table, viewable, insert_data);
|
||||
}
|
||||
|
@ -580,8 +499,9 @@ gimp_container_menu_remove (GimpContainerMenu *menu,
|
|||
{
|
||||
g_hash_table_remove (menu->hash_table, viewable);
|
||||
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[REMOVE_ITEM], 0,
|
||||
viewable, insert_data);
|
||||
GIMP_CONTAINER_MENU_GET_CLASS (menu)->remove_item (menu,
|
||||
viewable,
|
||||
insert_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -597,8 +517,10 @@ gimp_container_menu_reorder (GimpContainerMenu *menu,
|
|||
|
||||
if (insert_data)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (menu), menu_signals[REORDER_ITEM], 0,
|
||||
viewable, new_index, insert_data);
|
||||
GIMP_CONTAINER_MENU_GET_CLASS (menu)->reorder_item (menu,
|
||||
viewable,
|
||||
new_index,
|
||||
insert_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -35,6 +35,8 @@
|
|||
#define GIMP_CONTAINER_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_CONTAINER_MENU, GimpContainerMenuClass))
|
||||
#define GIMP_IS_CONTAINER_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_CONTAINER_MENU))
|
||||
#define GIMP_IS_CONTAINER_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_CONTAINER_MENU))
|
||||
#define GIMP_CONTAINER_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_CONTAINER_MENU, GimpContainerMenuClass))
|
||||
|
||||
|
||||
typedef struct _GimpContainerMenuClass GimpContainerMenuClass;
|
||||
|
||||
|
@ -56,6 +58,18 @@ struct _GimpContainerMenuClass
|
|||
{
|
||||
GtkMenuClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* select_item) (GimpContainerMenu *menu,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* activate_item) (GimpContainerMenu *menu,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* context_item) (GimpContainerMenu *menu,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
|
||||
/* virtual functions */
|
||||
void (* set_container) (GimpContainerMenu *menu,
|
||||
GimpContainer *container);
|
||||
gpointer (* insert_item) (GimpContainerMenu *menu,
|
||||
|
@ -68,21 +82,12 @@ struct _GimpContainerMenuClass
|
|||
GimpViewable *object,
|
||||
gint new_index,
|
||||
gpointer insert_data);
|
||||
void (* select_item) (GimpContainerMenu *menu,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* activate_item) (GimpContainerMenu *menu,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* context_item) (GimpContainerMenu *menu,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* clear_items) (GimpContainerMenu *menu);
|
||||
void (* set_preview_size) (GimpContainerMenu *menu);
|
||||
};
|
||||
|
||||
|
||||
GtkType gimp_container_menu_get_type (void);
|
||||
GType gimp_container_menu_get_type (void);
|
||||
|
||||
void gimp_container_menu_set_container (GimpContainerMenu *menu,
|
||||
GimpContainer *container);
|
||||
|
|
|
@ -39,15 +39,9 @@
|
|||
|
||||
enum
|
||||
{
|
||||
SET_CONTAINER,
|
||||
INSERT_ITEM,
|
||||
REMOVE_ITEM,
|
||||
REORDER_ITEM,
|
||||
SELECT_ITEM,
|
||||
ACTIVATE_ITEM,
|
||||
CONTEXT_ITEM,
|
||||
CLEAR_ITEMS,
|
||||
SET_PREVIEW_SIZE,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -130,50 +124,6 @@ gimp_container_view_class_init (GimpContainerViewClass *klass)
|
|||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
view_signals[SET_CONTAINER] =
|
||||
g_signal_new ("set_container",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpContainerViewClass, set_container),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GIMP_TYPE_OBJECT);
|
||||
|
||||
view_signals[INSERT_ITEM] =
|
||||
g_signal_new ("insert_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpContainerViewClass, insert_item),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__OBJECT_INT,
|
||||
G_TYPE_POINTER, 2,
|
||||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_INT);
|
||||
|
||||
view_signals[REMOVE_ITEM] =
|
||||
g_signal_new ("remove_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerViewClass, remove_item),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__OBJECT_POINTER,
|
||||
G_TYPE_NONE, 2,
|
||||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
view_signals[REORDER_ITEM] =
|
||||
g_signal_new ("reorder_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerViewClass, reorder_item),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__OBJECT_INT_POINTER,
|
||||
G_TYPE_NONE, 3,
|
||||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
view_signals[SELECT_ITEM] =
|
||||
g_signal_new ("select_item",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
|
@ -207,35 +157,18 @@ gimp_container_view_class_init (GimpContainerViewClass *klass)
|
|||
GIMP_TYPE_OBJECT,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
view_signals[CLEAR_ITEMS] =
|
||||
g_signal_new ("clear_items",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerViewClass, clear_items),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
view_signals[SET_PREVIEW_SIZE] =
|
||||
g_signal_new ("set_preview_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpContainerViewClass, set_preview_size),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
object_class->destroy = gimp_container_view_destroy;
|
||||
|
||||
widget_class->style_set = gimp_container_view_style_set;
|
||||
|
||||
klass->select_item = NULL;
|
||||
klass->activate_item = NULL;
|
||||
klass->context_item = NULL;
|
||||
|
||||
klass->set_container = gimp_container_view_real_set_container;
|
||||
klass->insert_item = NULL;
|
||||
klass->remove_item = NULL;
|
||||
klass->reorder_item = NULL;
|
||||
klass->select_item = NULL;
|
||||
klass->activate_item = NULL;
|
||||
klass->context_item = NULL;
|
||||
klass->clear_items = gimp_container_view_real_clear_items;
|
||||
klass->set_preview_size = NULL;
|
||||
|
||||
|
@ -327,11 +260,10 @@ gimp_container_view_set_container (GimpContainerView *view,
|
|||
g_return_if_fail (GIMP_IS_CONTAINER_VIEW (view));
|
||||
g_return_if_fail (! container || GIMP_IS_CONTAINER (container));
|
||||
|
||||
if (container == view->container)
|
||||
return;
|
||||
|
||||
g_signal_emit (G_OBJECT (view), view_signals[SET_CONTAINER], 0,
|
||||
container);
|
||||
if (container != view->container)
|
||||
{
|
||||
GIMP_CONTAINER_VIEW_GET_CLASS (view)->set_container (view, container);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -511,9 +443,12 @@ gimp_container_view_set_preview_size (GimpContainerView *view,
|
|||
g_return_if_fail (GIMP_IS_CONTAINER_VIEW (view));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256 /* FIXME: 64 */);
|
||||
|
||||
view->preview_size = preview_size;
|
||||
if (view->preview_size != preview_size)
|
||||
{
|
||||
view->preview_size = preview_size;
|
||||
|
||||
g_signal_emit (G_OBJECT (view), view_signals[SET_PREVIEW_SIZE], 0);
|
||||
GIMP_CONTAINER_VIEW_GET_CLASS (view)->set_preview_size (view);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -677,7 +612,7 @@ gimp_container_view_item_context (GimpContainerView *view,
|
|||
static void
|
||||
gimp_container_view_clear_items (GimpContainerView *view)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (view), view_signals[CLEAR_ITEMS], 0);
|
||||
GIMP_CONTAINER_VIEW_GET_CLASS (view)->clear_items (view);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -692,10 +627,11 @@ static void
|
|||
gimp_container_view_add_foreach (GimpViewable *viewable,
|
||||
GimpContainerView *view)
|
||||
{
|
||||
gpointer insert_data = NULL;
|
||||
gpointer insert_data;
|
||||
|
||||
g_signal_emit (G_OBJECT (view), view_signals[INSERT_ITEM], 0,
|
||||
viewable, -1, &insert_data);
|
||||
insert_data = GIMP_CONTAINER_VIEW_GET_CLASS (view)->insert_item (view,
|
||||
viewable,
|
||||
-1);
|
||||
|
||||
g_hash_table_insert (view->hash_table, viewable, insert_data);
|
||||
}
|
||||
|
@ -711,8 +647,9 @@ gimp_container_view_add (GimpContainerView *view,
|
|||
index = gimp_container_get_child_index (container,
|
||||
GIMP_OBJECT (viewable));
|
||||
|
||||
g_signal_emit (G_OBJECT (view), view_signals[INSERT_ITEM], 0,
|
||||
viewable, index, &insert_data);
|
||||
insert_data = GIMP_CONTAINER_VIEW_GET_CLASS (view)->insert_item (view,
|
||||
viewable,
|
||||
index);
|
||||
|
||||
g_hash_table_insert (view->hash_table, viewable, insert_data);
|
||||
}
|
||||
|
@ -730,8 +667,9 @@ gimp_container_view_remove (GimpContainerView *view,
|
|||
{
|
||||
g_hash_table_remove (view->hash_table, viewable);
|
||||
|
||||
g_signal_emit (G_OBJECT (view), view_signals[REMOVE_ITEM], 0,
|
||||
viewable, insert_data);
|
||||
GIMP_CONTAINER_VIEW_GET_CLASS (view)->remove_item (view,
|
||||
viewable,
|
||||
insert_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -747,8 +685,10 @@ gimp_container_view_reorder (GimpContainerView *view,
|
|||
|
||||
if (insert_data)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (view), view_signals[REORDER_ITEM], 0,
|
||||
viewable, new_index, insert_data);
|
||||
GIMP_CONTAINER_VIEW_GET_CLASS (view)->reorder_item (view,
|
||||
viewable,
|
||||
new_index,
|
||||
insert_data);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -796,4 +736,3 @@ gimp_container_view_button_viewable_dropped (GtkWidget *widget,
|
|||
gtk_button_clicked (GTK_BUTTON (widget));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#define GIMP_CONTAINER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_CONTAINER_VIEW, GimpContainerViewClass))
|
||||
#define GIMP_IS_CONTAINER_VIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_CONTAINER_VIEW))
|
||||
#define GIMP_IS_CONTAINER_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_CONTAINER_VIEW))
|
||||
#define GIMP_CONTAINER_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_CONTAINER_VIEW, GimpContainerViewClass))
|
||||
|
||||
|
||||
typedef struct _GimpContainerViewClass GimpContainerViewClass;
|
||||
|
@ -58,6 +59,18 @@ struct _GimpContainerViewClass
|
|||
{
|
||||
GtkVBoxClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* select_item) (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* activate_item) (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* context_item) (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
|
||||
/* virtual functions */
|
||||
void (* set_container) (GimpContainerView *view,
|
||||
GimpContainer *container);
|
||||
gpointer (* insert_item) (GimpContainerView *view,
|
||||
|
@ -70,15 +83,6 @@ struct _GimpContainerViewClass
|
|||
GimpViewable *object,
|
||||
gint new_index,
|
||||
gpointer insert_data);
|
||||
void (* select_item) (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* activate_item) (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* context_item) (GimpContainerView *view,
|
||||
GimpViewable *object,
|
||||
gpointer insert_data);
|
||||
void (* clear_items) (GimpContainerView *view);
|
||||
void (* set_preview_size) (GimpContainerView *view);
|
||||
};
|
||||
|
|
|
@ -43,11 +43,6 @@ static void gimp_drawable_list_item_init (GimpDrawableListItem *lis
|
|||
static void gimp_drawable_list_item_set_viewable (GimpListItem *list_item,
|
||||
GimpViewable *viewable);
|
||||
|
||||
static gboolean gimp_drawable_list_item_drag_motion (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gint x,
|
||||
gint y,
|
||||
guint time);
|
||||
static gboolean gimp_drawable_list_item_drag_drop (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gint x,
|
||||
|
@ -100,7 +95,6 @@ gimp_drawable_list_item_class_init (GimpDrawableListItemClass *klass)
|
|||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
widget_class->drag_motion = gimp_drawable_list_item_drag_motion;
|
||||
widget_class->drag_drop = gimp_drawable_list_item_drag_drop;
|
||||
|
||||
list_item_class->set_viewable = gimp_drawable_list_item_set_viewable;
|
||||
|
@ -178,35 +172,6 @@ gimp_drawable_list_item_set_viewable (GimpListItem *list_item,
|
|||
0);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_drawable_list_item_drag_motion (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
gint x,
|
||||
gint y,
|
||||
guint time)
|
||||
{
|
||||
GimpListItem *list_item;
|
||||
GimpViewable *src_viewable;
|
||||
gint dest_index;
|
||||
GdkDragAction drag_action;
|
||||
GimpDropType drop_type;
|
||||
gboolean return_val;
|
||||
|
||||
list_item = GIMP_LIST_ITEM (widget);
|
||||
|
||||
return_val = gimp_list_item_check_drag (list_item, context, x, y,
|
||||
&src_viewable,
|
||||
&dest_index,
|
||||
&drag_action,
|
||||
&drop_type);
|
||||
|
||||
gdk_drag_status (context, drag_action, time);
|
||||
|
||||
list_item->drop_type = drop_type;
|
||||
|
||||
return return_val;
|
||||
}
|
||||
|
||||
static gboolean
|
||||
gimp_drawable_list_item_drag_drop (GtkWidget *widget,
|
||||
GdkDragContext *context,
|
||||
|
|
|
@ -83,6 +83,14 @@ static void menus_create_items (GtkItemFactory *item_factory,
|
|||
guint callback_type,
|
||||
gboolean create_tearoff,
|
||||
gboolean static_entries);
|
||||
static GtkItemFactory * menus_item_factory_new
|
||||
(GtkType container_type,
|
||||
const gchar *path,
|
||||
const gchar *factory_path,
|
||||
guint n_entries,
|
||||
GimpItemFactoryEntry *entries,
|
||||
gpointer callback_data,
|
||||
gboolean create_tearoff);
|
||||
static void menus_create_branches (GtkItemFactory *item_factory,
|
||||
GimpItemFactoryEntry *entry);
|
||||
static void menus_init (void);
|
||||
|
@ -306,9 +314,6 @@ static GimpItemFactoryEntry toolbox_entries[] =
|
|||
NULL, NULL }
|
||||
#endif
|
||||
};
|
||||
static guint n_toolbox_entries = (sizeof (toolbox_entries) /
|
||||
sizeof (toolbox_entries[0]));
|
||||
static GtkItemFactory *toolbox_factory = NULL;
|
||||
|
||||
|
||||
/***** <Image> *****/
|
||||
|
@ -434,11 +439,13 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
NULL,
|
||||
"edit/clear.html", NULL },
|
||||
{ { N_("/Edit/Fill with FG Color"), "<control>comma",
|
||||
edit_fill_cmd_callback, (guint) FOREGROUND_FILL },
|
||||
edit_fill_cmd_callback, (guint) FOREGROUND_FILL,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_BUCKET_FILL },
|
||||
NULL,
|
||||
"edit/fill.html", NULL },
|
||||
{ { N_("/Edit/Fill with BG Color"), "<control>period",
|
||||
edit_fill_cmd_callback, (guint) BACKGROUND_FILL },
|
||||
edit_fill_cmd_callback, (guint) BACKGROUND_FILL,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_BUCKET_FILL },
|
||||
NULL,
|
||||
"edit/fill.html", NULL },
|
||||
{ { N_("/Edit/Stroke"), NULL,
|
||||
|
@ -513,16 +520,24 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
|
||||
/* <Image>/View/Zoom */
|
||||
|
||||
{ { N_("/View/Zoom/16:1"), NULL, view_zoom_cmd_callback, 1601 },
|
||||
{ { N_("/View/Zoom/16:1"), NULL,
|
||||
view_zoom_cmd_callback, 1601,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/8:1"), NULL, view_zoom_cmd_callback, 801 },
|
||||
{ { N_("/View/Zoom/8:1"), NULL,
|
||||
view_zoom_cmd_callback, 801,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/4:1"), NULL, view_zoom_cmd_callback, 401 },
|
||||
{ { N_("/View/Zoom/4:1"), NULL,
|
||||
view_zoom_cmd_callback, 401,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/2:1"), NULL, view_zoom_cmd_callback, 201 },
|
||||
{ { N_("/View/Zoom/2:1"), NULL,
|
||||
view_zoom_cmd_callback, 201,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_IN },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:1"), "1",
|
||||
|
@ -530,16 +545,24 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
"<StockItem>", GTK_STOCK_ZOOM_100 },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:2"), NULL, view_zoom_cmd_callback, 102 },
|
||||
{ { N_("/View/Zoom/1:2"), NULL,
|
||||
view_zoom_cmd_callback, 102,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:4"), NULL, view_zoom_cmd_callback, 104 },
|
||||
{ { N_("/View/Zoom/1:4"), NULL,
|
||||
view_zoom_cmd_callback, 104,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:8"), NULL, view_zoom_cmd_callback, 108 },
|
||||
{ { N_("/View/Zoom/1:8"), NULL,
|
||||
view_zoom_cmd_callback, 108,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
{ { N_("/View/Zoom/1:16"), NULL, view_zoom_cmd_callback, 116 },
|
||||
{ { N_("/View/Zoom/1:16"), NULL,
|
||||
view_zoom_cmd_callback, 116,
|
||||
"<StockItem>", GTK_STOCK_ZOOM_OUT },
|
||||
NULL,
|
||||
"view/zoom.html", NULL },
|
||||
|
||||
|
@ -551,11 +574,13 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
SEPARATOR ("/View/---"),
|
||||
|
||||
{ { N_("/View/Info Window..."), "<control><shift>I",
|
||||
view_info_window_cmd_callback, 0 },
|
||||
view_info_window_cmd_callback, 0,
|
||||
"<StockItem>", GTK_STOCK_HELP },
|
||||
NULL,
|
||||
"view/dialogs/info_window.html", NULL },
|
||||
{ { N_("/View/Nav. Window..."), "<control><shift>N",
|
||||
view_nav_window_cmd_callback, 0 },
|
||||
view_nav_window_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_MOVE },
|
||||
NULL,
|
||||
"view/dialogs/navigation_window.html", NULL },
|
||||
|
||||
|
@ -585,7 +610,8 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
SEPARATOR ("/View/---"),
|
||||
|
||||
{ { N_("/View/New View"), NULL,
|
||||
view_new_view_cmd_callback, 0 },
|
||||
view_new_view_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_NEW },
|
||||
NULL,
|
||||
"view/new_view.html", NULL },
|
||||
{ { N_("/View/Shrink Wrap"), "<control>E",
|
||||
|
@ -660,7 +686,8 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
NULL,
|
||||
"image/dialogs/set_canvas_size.html", NULL },
|
||||
{ { N_("/Image/Scale Image..."), NULL,
|
||||
image_scale_cmd_callback, 0 },
|
||||
image_scale_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_SCALE },
|
||||
NULL,
|
||||
"image/dialogs/scale_image.html", NULL },
|
||||
{ { N_("/Image/Duplicate"), "<control>D",
|
||||
|
@ -897,9 +924,6 @@ static GimpItemFactoryEntry image_entries[] =
|
|||
|
||||
BRANCH (N_("/Filters/Toys"))
|
||||
};
|
||||
static guint n_image_entries = (sizeof (image_entries) /
|
||||
sizeof (image_entries[0]));
|
||||
static GtkItemFactory *image_factory = NULL;
|
||||
|
||||
|
||||
/***** <Load> *****/
|
||||
|
@ -913,9 +937,6 @@ static GimpItemFactoryEntry load_entries[] =
|
|||
|
||||
SEPARATOR ("/---")
|
||||
};
|
||||
static guint n_load_entries = (sizeof (load_entries) /
|
||||
sizeof (load_entries[0]));
|
||||
static GtkItemFactory *load_factory = NULL;
|
||||
|
||||
|
||||
/***** <Save> *****/
|
||||
|
@ -929,9 +950,6 @@ static GimpItemFactoryEntry save_entries[] =
|
|||
|
||||
SEPARATOR ("/---")
|
||||
};
|
||||
static guint n_save_entries = (sizeof (save_entries) /
|
||||
sizeof (save_entries[0]));
|
||||
static GtkItemFactory *save_factory = NULL;
|
||||
|
||||
|
||||
/***** <Layers> *****/
|
||||
|
@ -994,7 +1012,8 @@ static GimpItemFactoryEntry layers_entries[] =
|
|||
NULL,
|
||||
"layer_to_image_size.html", NULL },
|
||||
{ { N_("/Scale Layer..."), "<control>S",
|
||||
layers_scale_cmd_callback, 0 },
|
||||
layers_scale_cmd_callback, 0,
|
||||
"<StockItem>", GIMP_STOCK_TOOL_SCALE },
|
||||
NULL,
|
||||
"dialogs/scale_layer.html", NULL },
|
||||
|
||||
|
@ -1051,9 +1070,6 @@ static GimpItemFactoryEntry layers_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_layer_attributes.html", NULL }
|
||||
};
|
||||
static guint n_layers_entries = (sizeof (layers_entries) /
|
||||
sizeof (layers_entries[0]));
|
||||
static GtkItemFactory *layers_factory = NULL;
|
||||
|
||||
|
||||
/***** <Channels> *****/
|
||||
|
@ -1120,9 +1136,6 @@ static GimpItemFactoryEntry channels_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_channel_attributes.html", NULL }
|
||||
};
|
||||
static guint n_channels_entries = (sizeof (channels_entries) /
|
||||
sizeof (channels_entries[0]));
|
||||
static GtkItemFactory *channels_factory = NULL;
|
||||
|
||||
|
||||
/***** <Paths> *****/
|
||||
|
@ -1191,9 +1204,6 @@ static GimpItemFactoryEntry paths_entries[] =
|
|||
NULL,
|
||||
"dialogs/edit_path_attributes.html", NULL }
|
||||
};
|
||||
static guint n_paths_entries = (sizeof (paths_entries) /
|
||||
sizeof (paths_entries[0]));
|
||||
static GtkItemFactory *paths_factory = NULL;
|
||||
|
||||
|
||||
/***** <Dialogs> *****/
|
||||
|
@ -1319,9 +1329,6 @@ static GimpItemFactoryEntry dialogs_entries[] =
|
|||
NULL, NULL }
|
||||
|
||||
};
|
||||
static guint n_dialogs_entries = (sizeof (dialogs_entries) /
|
||||
sizeof (dialogs_entries[0]));
|
||||
static GtkItemFactory *dialogs_factory = NULL;
|
||||
|
||||
|
||||
/***** <Brushes> *****/
|
||||
|
@ -1357,9 +1364,6 @@ static GimpItemFactoryEntry brushes_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_brushes_entries = (sizeof (brushes_entries) /
|
||||
sizeof (brushes_entries[0]));
|
||||
static GtkItemFactory *brushes_factory = NULL;
|
||||
|
||||
|
||||
/***** <Patterns> *****/
|
||||
|
@ -1395,9 +1399,6 @@ static GimpItemFactoryEntry patterns_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_patterns_entries = (sizeof (patterns_entries) /
|
||||
sizeof (patterns_entries[0]));
|
||||
static GtkItemFactory *patterns_factory = NULL;
|
||||
|
||||
|
||||
/***** <Gradients> *****/
|
||||
|
@ -1441,9 +1442,6 @@ static GimpItemFactoryEntry gradients_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_gradients_entries = (sizeof (gradients_entries) /
|
||||
sizeof (gradients_entries[0]));
|
||||
static GtkItemFactory *gradients_factory = NULL;
|
||||
|
||||
|
||||
/***** <Palettes> *****/
|
||||
|
@ -1491,19 +1489,92 @@ static GimpItemFactoryEntry palettes_entries[] =
|
|||
NULL,
|
||||
NULL, NULL }
|
||||
};
|
||||
static guint n_palettes_entries = (sizeof (palettes_entries) /
|
||||
sizeof (palettes_entries[0]));
|
||||
static GtkItemFactory *palettes_factory = NULL;
|
||||
|
||||
|
||||
static gboolean menus_initialized = FALSE;
|
||||
|
||||
|
||||
static GtkItemFactory *toolbox_factory = NULL;
|
||||
static GtkItemFactory *image_factory = NULL;
|
||||
static GtkItemFactory *load_factory = NULL;
|
||||
static GtkItemFactory *save_factory = NULL;
|
||||
static GtkItemFactory *layers_factory = NULL;
|
||||
static GtkItemFactory *channels_factory = NULL;
|
||||
static GtkItemFactory *paths_factory = NULL;
|
||||
static GtkItemFactory *dialogs_factory = NULL;
|
||||
static GtkItemFactory *brushes_factory = NULL;
|
||||
static GtkItemFactory *patterns_factory = NULL;
|
||||
static GtkItemFactory *gradients_factory = NULL;
|
||||
static GtkItemFactory *palettes_factory = NULL;
|
||||
|
||||
|
||||
GtkItemFactory *
|
||||
menus_get_toolbox_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! toolbox_factory)
|
||||
{
|
||||
GimpItemFactoryEntry *last_opened_entries;
|
||||
GtkWidget *menu_item;
|
||||
gint i;
|
||||
|
||||
toolbox_factory = menus_item_factory_new (GTK_TYPE_MENU_BAR,
|
||||
"<Toolbox>", "toolbox",
|
||||
G_N_ELEMENTS (toolbox_entries),
|
||||
toolbox_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
last_opened_entries = g_new (GimpItemFactoryEntry,
|
||||
gimprc.last_opened_size);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
last_opened_entries[i].entry.path =
|
||||
g_strdup_printf ("/File/MRU%02d", i + 1);
|
||||
|
||||
if (i < 9)
|
||||
last_opened_entries[i].entry.accelerator =
|
||||
g_strdup_printf ("<control>%d", i + 1);
|
||||
else
|
||||
last_opened_entries[i].entry.accelerator = NULL;
|
||||
|
||||
last_opened_entries[i].entry.callback = file_last_opened_cmd_callback;
|
||||
last_opened_entries[i].entry.callback_action = i;
|
||||
last_opened_entries[i].entry.item_type = "<StockItem>";
|
||||
last_opened_entries[i].entry.extra_data = GTK_STOCK_OPEN;
|
||||
last_opened_entries[i].quark_string = NULL;
|
||||
last_opened_entries[i].help_page = "file/last_opened.html";
|
||||
last_opened_entries[i].description = NULL;
|
||||
}
|
||||
|
||||
menus_create_items (toolbox_factory, gimprc.last_opened_size,
|
||||
last_opened_entries, NULL, 2, TRUE, FALSE);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
menu_item =
|
||||
gtk_item_factory_get_widget (toolbox_factory,
|
||||
last_opened_entries[i].entry.path);
|
||||
gtk_widget_hide (menu_item);
|
||||
}
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/---MRU");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
gtk_widget_hide (menu_item);
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/Quit");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
g_free (last_opened_entries[i].entry.path);
|
||||
g_free (last_opened_entries[i].entry.accelerator);
|
||||
}
|
||||
|
||||
g_free (last_opened_entries);
|
||||
}
|
||||
|
||||
return toolbox_factory;
|
||||
}
|
||||
|
@ -1511,8 +1582,15 @@ menus_get_toolbox_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_image_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! image_factory)
|
||||
{
|
||||
image_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Image>", "image",
|
||||
G_N_ELEMENTS (image_entries),
|
||||
image_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
}
|
||||
|
||||
return image_factory;
|
||||
}
|
||||
|
@ -1520,8 +1598,15 @@ menus_get_image_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_load_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! load_factory)
|
||||
{
|
||||
load_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Load>", "open",
|
||||
G_N_ELEMENTS (load_entries),
|
||||
load_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return load_factory;
|
||||
}
|
||||
|
@ -1529,8 +1614,15 @@ menus_get_load_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_save_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! save_factory)
|
||||
{
|
||||
save_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Save>", "save",
|
||||
G_N_ELEMENTS (save_entries),
|
||||
save_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return save_factory;
|
||||
}
|
||||
|
@ -1538,8 +1630,15 @@ menus_get_save_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_layers_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! layers_factory)
|
||||
{
|
||||
layers_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Layers>", "layers",
|
||||
G_N_ELEMENTS (layers_entries),
|
||||
layers_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return layers_factory;
|
||||
}
|
||||
|
@ -1547,8 +1646,15 @@ menus_get_layers_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_channels_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! channels_factory)
|
||||
{
|
||||
channels_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Channels>", "channels",
|
||||
G_N_ELEMENTS (channels_entries),
|
||||
channels_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return channels_factory;
|
||||
}
|
||||
|
@ -1556,8 +1662,15 @@ menus_get_channels_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_paths_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! paths_factory)
|
||||
{
|
||||
paths_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Paths>", "paths",
|
||||
G_N_ELEMENTS (paths_entries),
|
||||
paths_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return paths_factory;
|
||||
}
|
||||
|
@ -1565,8 +1678,15 @@ menus_get_paths_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_dialogs_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! dialogs_factory)
|
||||
{
|
||||
dialogs_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Dialogs>", "dialogs",
|
||||
G_N_ELEMENTS (dialogs_entries),
|
||||
dialogs_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return dialogs_factory;
|
||||
}
|
||||
|
@ -1574,8 +1694,15 @@ menus_get_dialogs_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_brushes_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! brushes_factory)
|
||||
{
|
||||
brushes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Brushes>", "brushes",
|
||||
G_N_ELEMENTS (brushes_entries),
|
||||
brushes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return brushes_factory;
|
||||
}
|
||||
|
@ -1583,8 +1710,15 @@ menus_get_brushes_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_patterns_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! patterns_factory)
|
||||
{
|
||||
patterns_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Patterns>", "patterns",
|
||||
G_N_ELEMENTS (patterns_entries),
|
||||
patterns_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return patterns_factory;
|
||||
}
|
||||
|
@ -1592,8 +1726,15 @@ menus_get_patterns_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_gradients_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! gradients_factory)
|
||||
{
|
||||
gradients_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Gradients>", "gradients",
|
||||
G_N_ELEMENTS (gradients_entries),
|
||||
gradients_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return gradients_factory;
|
||||
}
|
||||
|
@ -1601,13 +1742,19 @@ menus_get_gradients_factory (void)
|
|||
GtkItemFactory *
|
||||
menus_get_palettes_factory (void)
|
||||
{
|
||||
if (! menus_initialized)
|
||||
menus_init ();
|
||||
if (! palettes_factory)
|
||||
{
|
||||
palettes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Palettes>", "palettes",
|
||||
G_N_ELEMENTS (palettes_entries),
|
||||
palettes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
}
|
||||
|
||||
return palettes_factory;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
menus_create_item_from_full_path (GimpItemFactoryEntry *entry,
|
||||
gchar *domain_name,
|
||||
|
@ -2036,32 +2183,6 @@ menus_destroy (gchar *path)
|
|||
gtk_item_factories_path_delete (NULL, path);
|
||||
}
|
||||
|
||||
void
|
||||
menus_quit (void)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gimp_personal_rc_file ("menurc");
|
||||
gtk_item_factory_dump_rc (filename, NULL, TRUE);
|
||||
g_free (filename);
|
||||
|
||||
if (menus_initialized)
|
||||
{
|
||||
g_object_unref (G_OBJECT (toolbox_factory));
|
||||
g_object_unref (G_OBJECT (image_factory));
|
||||
g_object_unref (G_OBJECT (load_factory));
|
||||
g_object_unref (G_OBJECT (save_factory));
|
||||
g_object_unref (G_OBJECT (layers_factory));
|
||||
g_object_unref (G_OBJECT (channels_factory));
|
||||
g_object_unref (G_OBJECT (paths_factory));
|
||||
g_object_unref (G_OBJECT (dialogs_factory));
|
||||
g_object_unref (G_OBJECT (brushes_factory));
|
||||
g_object_unref (G_OBJECT (patterns_factory));
|
||||
g_object_unref (G_OBJECT (gradients_factory));
|
||||
g_object_unref (G_OBJECT (palettes_factory));
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
menus_last_opened_update_labels (void)
|
||||
{
|
||||
|
@ -2166,64 +2287,6 @@ menus_last_opened_add (const gchar *filename)
|
|||
menus_last_opened_update_labels ();
|
||||
}
|
||||
|
||||
static void
|
||||
menus_init_mru (void)
|
||||
{
|
||||
GimpItemFactoryEntry *last_opened_entries;
|
||||
GtkWidget *menu_item;
|
||||
gint i;
|
||||
|
||||
last_opened_entries = g_new (GimpItemFactoryEntry, gimprc.last_opened_size);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
last_opened_entries[i].entry.path =
|
||||
g_strdup_printf ("/File/MRU%02d", i + 1);
|
||||
|
||||
if (i < 9)
|
||||
last_opened_entries[i].entry.accelerator =
|
||||
g_strdup_printf ("<control>%d", i + 1);
|
||||
else
|
||||
last_opened_entries[i].entry.accelerator = NULL;
|
||||
|
||||
last_opened_entries[i].entry.callback = file_last_opened_cmd_callback;
|
||||
last_opened_entries[i].entry.callback_action = i;
|
||||
last_opened_entries[i].entry.item_type = "<StockItem>";
|
||||
last_opened_entries[i].entry.extra_data = GTK_STOCK_OPEN;
|
||||
last_opened_entries[i].quark_string = NULL;
|
||||
last_opened_entries[i].help_page = "file/last_opened.html";
|
||||
last_opened_entries[i].description = NULL;
|
||||
}
|
||||
|
||||
menus_create_items (toolbox_factory, gimprc.last_opened_size,
|
||||
last_opened_entries, NULL, 2, TRUE, FALSE);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
menu_item =
|
||||
gtk_item_factory_get_widget (toolbox_factory,
|
||||
last_opened_entries[i].entry.path);
|
||||
gtk_widget_hide (menu_item);
|
||||
}
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/---MRU");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
gtk_widget_hide (menu_item);
|
||||
|
||||
menu_item = gtk_item_factory_get_widget (toolbox_factory, "/File/Quit");
|
||||
if (menu_item && menu_item->parent)
|
||||
gtk_menu_reorder_child (GTK_MENU (menu_item->parent), menu_item, -1);
|
||||
|
||||
for (i = 0; i < gimprc.last_opened_size; i++)
|
||||
{
|
||||
g_free (last_opened_entries[i].entry.path);
|
||||
g_free (last_opened_entries[i].entry.accelerator);
|
||||
}
|
||||
|
||||
g_free (last_opened_entries);
|
||||
}
|
||||
|
||||
/* This function gets called while browsing a menu created
|
||||
* by a GtkItemFactory
|
||||
*/
|
||||
|
@ -2454,92 +2517,18 @@ menus_init (void)
|
|||
|
||||
menus_initialized = TRUE;
|
||||
|
||||
toolbox_factory = menus_item_factory_new (GTK_TYPE_MENU_BAR,
|
||||
"<Toolbox>", "toolbox",
|
||||
n_toolbox_entries,
|
||||
toolbox_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
menus_init_mru ();
|
||||
|
||||
image_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Image>", "image",
|
||||
n_image_entries,
|
||||
image_entries,
|
||||
NULL,
|
||||
TRUE);
|
||||
|
||||
load_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Load>", "open",
|
||||
n_load_entries,
|
||||
load_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
save_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Save>", "save",
|
||||
n_save_entries,
|
||||
save_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
layers_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Layers>", "layers",
|
||||
n_layers_entries,
|
||||
layers_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
channels_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Channels>", "channels",
|
||||
n_channels_entries,
|
||||
channels_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
paths_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Paths>", "paths",
|
||||
n_paths_entries,
|
||||
paths_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
dialogs_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Dialogs>", "dialogs",
|
||||
n_dialogs_entries,
|
||||
dialogs_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
brushes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Brushes>", "brushes",
|
||||
n_brushes_entries,
|
||||
brushes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
patterns_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Patterns>", "patterns",
|
||||
n_patterns_entries,
|
||||
patterns_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
gradients_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Gradients>", "gradients",
|
||||
n_gradients_entries,
|
||||
gradients_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
palettes_factory = menus_item_factory_new (GTK_TYPE_MENU,
|
||||
"<Palettes>", "palettes",
|
||||
n_palettes_entries,
|
||||
palettes_entries,
|
||||
NULL,
|
||||
FALSE);
|
||||
|
||||
toolbox_factory = menus_get_toolbox_factory ();
|
||||
image_factory = menus_get_image_factory ();
|
||||
load_factory = menus_get_load_factory ();
|
||||
save_factory = menus_get_save_factory ();
|
||||
layers_factory = menus_get_layers_factory ();
|
||||
channels_factory = menus_get_channels_factory ();
|
||||
paths_factory = menus_get_paths_factory ();
|
||||
dialogs_factory = menus_get_dialogs_factory ();
|
||||
brushes_factory = menus_get_brushes_factory ();
|
||||
patterns_factory = menus_get_patterns_factory ();
|
||||
gradients_factory = menus_get_gradients_factory ();
|
||||
palettes_factory = menus_get_palettes_factory ();
|
||||
|
||||
for (list = GIMP_LIST (the_gimp->tool_info_list)->list;
|
||||
list;
|
||||
|
@ -2597,6 +2586,88 @@ menus_init (void)
|
|||
g_free (filename);
|
||||
}
|
||||
|
||||
void
|
||||
menus_quit (void)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = gimp_personal_rc_file ("menurc");
|
||||
gtk_item_factory_dump_rc (filename, NULL, TRUE);
|
||||
g_free (filename);
|
||||
|
||||
if (toolbox_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (toolbox_factory));
|
||||
toolbox_factory = NULL;
|
||||
}
|
||||
|
||||
if (image_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (image_factory));
|
||||
image_factory = NULL;
|
||||
}
|
||||
|
||||
if (load_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (load_factory));
|
||||
load_factory = NULL;
|
||||
}
|
||||
|
||||
if (save_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (save_factory));
|
||||
save_factory = NULL;
|
||||
}
|
||||
|
||||
if (layers_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (layers_factory));
|
||||
layers_factory = NULL;
|
||||
}
|
||||
|
||||
if (channels_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (channels_factory));
|
||||
channels_factory = NULL;
|
||||
}
|
||||
|
||||
if (paths_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (paths_factory));
|
||||
paths_factory = NULL;
|
||||
}
|
||||
|
||||
if (dialogs_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (dialogs_factory));
|
||||
dialogs_factory = NULL;
|
||||
}
|
||||
|
||||
if (brushes_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (brushes_factory));
|
||||
brushes_factory = NULL;
|
||||
}
|
||||
|
||||
if (patterns_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (patterns_factory));
|
||||
patterns_factory = NULL;
|
||||
}
|
||||
|
||||
if (gradients_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (gradients_factory));
|
||||
gradients_factory = NULL;
|
||||
}
|
||||
|
||||
if (palettes_factory)
|
||||
{
|
||||
g_object_unref (G_OBJECT (palettes_factory));
|
||||
palettes_factory = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef ENABLE_NLS
|
||||
|
||||
static gchar *
|
||||
|
|
|
@ -287,7 +287,12 @@ gimp_layer_list_item_drag_motion (GtkWidget *widget,
|
|||
|
||||
gdk_drag_status (context, drag_action, time);
|
||||
|
||||
list_item->drop_type = drop_type;
|
||||
if (list_item->drop_type != drop_type)
|
||||
{
|
||||
list_item->drop_type = drop_type;
|
||||
|
||||
gtk_widget_queue_draw (widget);
|
||||
}
|
||||
|
||||
return return_val;
|
||||
}
|
||||
|
|
|
@ -39,14 +39,6 @@
|
|||
#include "gimppreview.h"
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
SET_VIEWABLE,
|
||||
SET_PREVIEW_SIZE,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
||||
static void gimp_list_item_class_init (GimpListItemClass *klass);
|
||||
static void gimp_list_item_init (GimpListItem *list_item);
|
||||
|
||||
|
@ -76,15 +68,13 @@ static GimpViewable * gimp_list_item_drag_viewable (GtkWidget *widget,
|
|||
gpointer data);
|
||||
|
||||
|
||||
static guint list_item_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static GtkListItemClass *parent_class = NULL;
|
||||
static GtkListItemClass *parent_class = NULL;
|
||||
|
||||
|
||||
GtkType
|
||||
GType
|
||||
gimp_list_item_get_type (void)
|
||||
{
|
||||
static GtkType list_item_type = 0;
|
||||
static GType list_item_type = 0;
|
||||
|
||||
if (!list_item_type)
|
||||
{
|
||||
|
@ -109,34 +99,12 @@ gimp_list_item_get_type (void)
|
|||
static void
|
||||
gimp_list_item_class_init (GimpListItemClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
GtkWidgetClass *widget_class;
|
||||
|
||||
object_class = (GtkObjectClass *) klass;
|
||||
widget_class = (GtkWidgetClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
list_item_signals[SET_VIEWABLE] =
|
||||
g_signal_new ("set_viewable",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpListItemClass, set_viewable),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GIMP_TYPE_VIEWABLE);
|
||||
|
||||
list_item_signals[SET_PREVIEW_SIZE] =
|
||||
g_signal_new ("set_preview_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpListItemClass, set_preview_size),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__INT,
|
||||
G_TYPE_NONE, 1,
|
||||
G_TYPE_INT);
|
||||
|
||||
widget_class->expose_event = gimp_list_item_expose_event;
|
||||
widget_class->drag_leave = gimp_list_item_drag_leave;
|
||||
widget_class->drag_motion = gimp_list_item_drag_motion;
|
||||
|
@ -173,8 +141,7 @@ gimp_list_item_expose_event (GtkWidget *widget,
|
|||
|
||||
list_item = GIMP_LIST_ITEM (widget);
|
||||
|
||||
if (GTK_WIDGET_CLASS (parent_class)->expose_event)
|
||||
GTK_WIDGET_CLASS (parent_class)->expose_event (widget, eevent);
|
||||
GTK_WIDGET_CLASS (parent_class)->expose_event (widget, eevent);
|
||||
|
||||
if (list_item->drop_type != GIMP_DROP_NONE)
|
||||
{
|
||||
|
@ -200,7 +167,7 @@ gimp_list_item_expose_event (GtkWidget *widget,
|
|||
GDK_CAP_BUTT, GDK_JOIN_MITER);
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -239,7 +206,12 @@ gimp_list_item_drag_motion (GtkWidget *widget,
|
|||
|
||||
gdk_drag_status (context, drag_action, time);
|
||||
|
||||
list_item->drop_type = drop_type;
|
||||
if (list_item->drop_type != drop_type)
|
||||
{
|
||||
list_item->drop_type = drop_type;
|
||||
|
||||
gtk_widget_queue_draw (widget);
|
||||
}
|
||||
|
||||
return return_val;
|
||||
}
|
||||
|
@ -285,7 +257,6 @@ gimp_list_item_new (GimpViewable *viewable,
|
|||
{
|
||||
GimpListItem *list_item;
|
||||
|
||||
g_return_val_if_fail (viewable != NULL, NULL);
|
||||
g_return_val_if_fail (GIMP_IS_VIEWABLE (viewable), NULL);
|
||||
g_return_val_if_fail (preview_size > 0 && preview_size <= 256, NULL);
|
||||
|
||||
|
@ -317,11 +288,9 @@ void
|
|||
gimp_list_item_set_viewable (GimpListItem *list_item,
|
||||
GimpViewable *viewable)
|
||||
{
|
||||
g_return_if_fail (list_item != NULL);
|
||||
g_return_if_fail (GIMP_IS_LIST_ITEM (list_item));
|
||||
|
||||
g_signal_emit (G_OBJECT (list_item), list_item_signals[SET_VIEWABLE], 0,
|
||||
viewable);
|
||||
GIMP_LIST_ITEM_GET_CLASS (list_item)->set_viewable (list_item, viewable);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -359,13 +328,12 @@ void
|
|||
gimp_list_item_set_preview_size (GimpListItem *list_item,
|
||||
gint preview_size)
|
||||
{
|
||||
g_return_if_fail (list_item != NULL);
|
||||
g_return_if_fail (GIMP_IS_LIST_ITEM (list_item));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256 /* FIXME: 64 */);
|
||||
|
||||
list_item->preview_size = preview_size;
|
||||
|
||||
g_signal_emit (G_OBJECT (list_item), list_item_signals[SET_PREVIEW_SIZE], 0);
|
||||
GIMP_LIST_ITEM_GET_CLASS (list_item)->set_preview_size (list_item);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
|
@ -36,6 +36,7 @@ extern "C" {
|
|||
#define GIMP_LIST_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_LIST_ITEM, GimpListItemClass))
|
||||
#define GIMP_IS_LIST_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_LIST_ITEM))
|
||||
#define GIMP_IS_LIST_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_LIST_ITEM))
|
||||
#define GIMP_LIST_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_LIST_ITEM, GimpListItemClass))
|
||||
|
||||
|
||||
typedef struct _GimpListItemClass GimpListItemClass;
|
||||
|
@ -63,13 +64,15 @@ struct _GimpListItemClass
|
|||
{
|
||||
GtkListItemClass parent_class;
|
||||
|
||||
/* virtual functions */
|
||||
void (* set_viewable) (GimpListItem *list_item,
|
||||
GimpViewable *viewable);
|
||||
void (* set_preview_size) (GimpListItem *list_item);
|
||||
};
|
||||
|
||||
|
||||
GtkType gimp_list_item_get_type (void);
|
||||
GType gimp_list_item_get_type (void);
|
||||
|
||||
GtkWidget * gimp_list_item_new (GimpViewable *viewable,
|
||||
gint preview_size);
|
||||
|
||||
|
|
|
@ -33,13 +33,6 @@
|
|||
#include "gimppreview.h"
|
||||
|
||||
|
||||
enum
|
||||
{
|
||||
SET_VIEWABLE,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
||||
static void gimp_menu_item_class_init (GimpMenuItemClass *klass);
|
||||
static void gimp_menu_item_init (GimpMenuItem *menu_item);
|
||||
|
||||
|
@ -55,15 +48,13 @@ static GimpViewable * gimp_menu_item_drag_viewable (GtkWidget *widget,
|
|||
gpointer data);
|
||||
|
||||
|
||||
static guint menu_item_signals[LAST_SIGNAL] = { 0 };
|
||||
|
||||
static GtkMenuItemClass *parent_class = NULL;
|
||||
static GtkMenuItemClass *parent_class = NULL;
|
||||
|
||||
|
||||
GtkType
|
||||
GType
|
||||
gimp_menu_item_get_type (void)
|
||||
{
|
||||
static GtkType menu_item_type = 0;
|
||||
static GType menu_item_type = 0;
|
||||
|
||||
if (!menu_item_type)
|
||||
{
|
||||
|
@ -88,22 +79,8 @@ gimp_menu_item_get_type (void)
|
|||
static void
|
||||
gimp_menu_item_class_init (GimpMenuItemClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
object_class = (GtkObjectClass *) klass;
|
||||
|
||||
parent_class = g_type_class_peek_parent (klass);
|
||||
|
||||
menu_item_signals[SET_VIEWABLE] =
|
||||
g_signal_new ("set_viewable",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_FIRST,
|
||||
G_STRUCT_OFFSET (GimpMenuItemClass, set_viewable),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__OBJECT,
|
||||
G_TYPE_NONE, 1,
|
||||
GIMP_TYPE_VIEWABLE);
|
||||
|
||||
klass->set_viewable = gimp_menu_item_real_set_viewable;
|
||||
}
|
||||
|
||||
|
@ -127,7 +104,6 @@ gimp_menu_item_new (GimpViewable *viewable,
|
|||
{
|
||||
GimpMenuItem *menu_item;
|
||||
|
||||
g_return_val_if_fail (viewable != NULL, NULL);
|
||||
g_return_val_if_fail (GIMP_IS_VIEWABLE (viewable), NULL);
|
||||
g_return_val_if_fail (preview_size > 0 && preview_size <= 256, NULL);
|
||||
|
||||
|
@ -144,8 +120,7 @@ static void
|
|||
gimp_menu_item_set_viewable (GimpMenuItem *menu_item,
|
||||
GimpViewable *viewable)
|
||||
{
|
||||
g_signal_emit (GTK_OBJECT (menu_item), menu_item_signals[SET_VIEWABLE], 0,
|
||||
viewable);
|
||||
GIMP_MENU_ITEM_GET_CLASS (menu_item)->set_viewable (menu_item, viewable);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -183,7 +158,6 @@ void
|
|||
gimp_menu_item_set_name_func (GimpMenuItem *menu_item,
|
||||
GimpItemGetNameFunc get_name_func)
|
||||
{
|
||||
g_return_if_fail (menu_item != NULL);
|
||||
g_return_if_fail (GIMP_IS_MENU_ITEM (menu_item));
|
||||
|
||||
if (menu_item->get_name_func != get_name_func)
|
||||
|
|
|
@ -36,6 +36,7 @@ extern "C" {
|
|||
#define GIMP_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_MENU_ITEM, GimpMenuItemClass))
|
||||
#define GIMP_IS_MENU_ITEM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_MENU_ITEM))
|
||||
#define GIMP_IS_MENU_ITEM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_MENU_ITEM))
|
||||
#define GIMP_MENU_ITEM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_MENU_ITEM, GimpMenuItemClass))
|
||||
|
||||
|
||||
typedef struct _GimpMenuItemClass GimpMenuItemClass;
|
||||
|
@ -60,12 +61,14 @@ struct _GimpMenuItemClass
|
|||
{
|
||||
GtkMenuItemClass parent_class;
|
||||
|
||||
/* virtual functions */
|
||||
void (* set_viewable) (GimpMenuItem *menu_item,
|
||||
GimpViewable *viewable);
|
||||
};
|
||||
|
||||
|
||||
GtkType gimp_menu_item_get_type (void);
|
||||
GType gimp_menu_item_get_type (void);
|
||||
|
||||
GtkWidget * gimp_menu_item_new (GimpViewable *viewable,
|
||||
gint preview_size);
|
||||
|
||||
|
|
|
@ -72,9 +72,6 @@ enum
|
|||
EXTENDED_CLICKED,
|
||||
CONTEXT,
|
||||
RENDER,
|
||||
GET_SIZE,
|
||||
NEEDS_POPUP,
|
||||
CREATE_POPUP,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -197,45 +194,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
|
|||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[RENDER] =
|
||||
g_signal_new ("render",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, render),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[GET_SIZE] =
|
||||
g_signal_new ("get_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, get_size),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__INT_POINTER_POINTER,
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_POINTER,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
preview_signals[NEEDS_POPUP] =
|
||||
g_signal_new ("needs_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, needs_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_BOOLEAN__VOID,
|
||||
G_TYPE_BOOLEAN, 0);
|
||||
|
||||
preview_signals[CREATE_POPUP] =
|
||||
g_signal_new ("create_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, create_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__VOID,
|
||||
G_TYPE_POINTER, 0);
|
||||
|
||||
object_class->destroy = gimp_preview_destroy;
|
||||
|
||||
widget_class->size_allocate = gimp_preview_size_allocate;
|
||||
|
@ -484,7 +442,6 @@ gimp_preview_set_size (GimpPreview *preview,
|
|||
{
|
||||
gint width, height;
|
||||
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256);
|
||||
g_return_if_fail (border_width >= 0 && border_width <= 16);
|
||||
|
@ -505,7 +462,6 @@ gimp_preview_set_size_full (GimpPreview *preview,
|
|||
gint height,
|
||||
gint border_width)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width > 0 && width <= 256);
|
||||
g_return_if_fail (height > 0 && height <= 256);
|
||||
|
@ -527,7 +483,6 @@ void
|
|||
gimp_preview_set_dot_for_dot (GimpPreview *preview,
|
||||
gboolean dot_for_dot)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
if (dot_for_dot != preview->dot_for_dot)
|
||||
|
@ -549,7 +504,6 @@ void
|
|||
gimp_preview_set_border_color (GimpPreview *preview,
|
||||
const GimpRGB *color)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
|
@ -564,7 +518,9 @@ gimp_preview_set_border_color (GimpPreview *preview,
|
|||
void
|
||||
gimp_preview_render (GimpPreview *preview)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[RENDER], 0);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->render (preview);
|
||||
}
|
||||
|
||||
static gint
|
||||
|
@ -594,13 +550,18 @@ gimp_preview_button_press_event (GtkWidget *widget,
|
|||
bevent->y);
|
||||
}
|
||||
}
|
||||
else if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
preview->press_state = 0;
|
||||
|
||||
if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (bevent->type == GDK_2BUTTON_PRESS)
|
||||
|
@ -705,16 +666,15 @@ gimp_preview_real_render (GimpPreview *preview)
|
|||
{
|
||||
TempBuf *temp_buf;
|
||||
|
||||
temp_buf = gimp_viewable_get_new_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
temp_buf = gimp_viewable_get_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
|
||||
if (temp_buf)
|
||||
{
|
||||
gimp_preview_render_and_flush (preview,
|
||||
temp_buf,
|
||||
-1);
|
||||
temp_buf_free (temp_buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -724,13 +684,11 @@ gimp_preview_get_size (GimpPreview *preview,
|
|||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width != NULL);
|
||||
g_return_if_fail (height != NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[GET_SIZE], 0,
|
||||
size, width, height);
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->get_size (preview, size, width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -746,12 +704,9 @@ gimp_preview_real_get_size (GimpPreview *preview,
|
|||
static gboolean
|
||||
gimp_preview_needs_popup (GimpPreview *preview)
|
||||
{
|
||||
gboolean needs_popup = FALSE;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), FALSE);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[NEEDS_POPUP], 0,
|
||||
&needs_popup);
|
||||
|
||||
return needs_popup;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->needs_popup (preview);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -763,12 +718,9 @@ gimp_preview_real_needs_popup (GimpPreview *preview)
|
|||
static GtkWidget *
|
||||
gimp_preview_create_popup (GimpPreview *preview)
|
||||
{
|
||||
GtkWidget *popup_preview = NULL;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[CREATE_POPUP], 0,
|
||||
&popup_preview);
|
||||
|
||||
return popup_preview;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->create_popup (preview);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
|
|
|
@ -36,6 +36,7 @@ extern "C" {
|
|||
#define GIMP_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
#define GIMP_IS_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_IS_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
|
||||
|
||||
typedef struct _GimpPreviewClass GimpPreviewClass;
|
||||
|
@ -71,12 +72,14 @@ struct _GimpPreviewClass
|
|||
{
|
||||
GtkPreviewClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* clicked) (GimpPreview *preview);
|
||||
void (* double_clicked) (GimpPreview *preview);
|
||||
void (* extended_clicked) (GimpPreview *preview,
|
||||
guint modifier_state);
|
||||
void (* context) (GimpPreview *preview);
|
||||
|
||||
/* virtual functions */
|
||||
void (* render) (GimpPreview *preview);
|
||||
void (* get_size) (GimpPreview *preview,
|
||||
gint size,
|
||||
|
@ -87,7 +90,7 @@ struct _GimpPreviewClass
|
|||
};
|
||||
|
||||
|
||||
GtkType gimp_preview_get_type (void);
|
||||
GType gimp_preview_get_type (void);
|
||||
|
||||
GtkWidget * gimp_preview_new (GimpViewable *viewable,
|
||||
gint size,
|
||||
|
|
|
@ -72,9 +72,6 @@ enum
|
|||
EXTENDED_CLICKED,
|
||||
CONTEXT,
|
||||
RENDER,
|
||||
GET_SIZE,
|
||||
NEEDS_POPUP,
|
||||
CREATE_POPUP,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -197,45 +194,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
|
|||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[RENDER] =
|
||||
g_signal_new ("render",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, render),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[GET_SIZE] =
|
||||
g_signal_new ("get_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, get_size),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__INT_POINTER_POINTER,
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_POINTER,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
preview_signals[NEEDS_POPUP] =
|
||||
g_signal_new ("needs_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, needs_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_BOOLEAN__VOID,
|
||||
G_TYPE_BOOLEAN, 0);
|
||||
|
||||
preview_signals[CREATE_POPUP] =
|
||||
g_signal_new ("create_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, create_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__VOID,
|
||||
G_TYPE_POINTER, 0);
|
||||
|
||||
object_class->destroy = gimp_preview_destroy;
|
||||
|
||||
widget_class->size_allocate = gimp_preview_size_allocate;
|
||||
|
@ -484,7 +442,6 @@ gimp_preview_set_size (GimpPreview *preview,
|
|||
{
|
||||
gint width, height;
|
||||
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256);
|
||||
g_return_if_fail (border_width >= 0 && border_width <= 16);
|
||||
|
@ -505,7 +462,6 @@ gimp_preview_set_size_full (GimpPreview *preview,
|
|||
gint height,
|
||||
gint border_width)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width > 0 && width <= 256);
|
||||
g_return_if_fail (height > 0 && height <= 256);
|
||||
|
@ -527,7 +483,6 @@ void
|
|||
gimp_preview_set_dot_for_dot (GimpPreview *preview,
|
||||
gboolean dot_for_dot)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
if (dot_for_dot != preview->dot_for_dot)
|
||||
|
@ -549,7 +504,6 @@ void
|
|||
gimp_preview_set_border_color (GimpPreview *preview,
|
||||
const GimpRGB *color)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
|
@ -564,7 +518,9 @@ gimp_preview_set_border_color (GimpPreview *preview,
|
|||
void
|
||||
gimp_preview_render (GimpPreview *preview)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[RENDER], 0);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->render (preview);
|
||||
}
|
||||
|
||||
static gint
|
||||
|
@ -594,13 +550,18 @@ gimp_preview_button_press_event (GtkWidget *widget,
|
|||
bevent->y);
|
||||
}
|
||||
}
|
||||
else if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
preview->press_state = 0;
|
||||
|
||||
if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (bevent->type == GDK_2BUTTON_PRESS)
|
||||
|
@ -705,16 +666,15 @@ gimp_preview_real_render (GimpPreview *preview)
|
|||
{
|
||||
TempBuf *temp_buf;
|
||||
|
||||
temp_buf = gimp_viewable_get_new_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
temp_buf = gimp_viewable_get_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
|
||||
if (temp_buf)
|
||||
{
|
||||
gimp_preview_render_and_flush (preview,
|
||||
temp_buf,
|
||||
-1);
|
||||
temp_buf_free (temp_buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -724,13 +684,11 @@ gimp_preview_get_size (GimpPreview *preview,
|
|||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width != NULL);
|
||||
g_return_if_fail (height != NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[GET_SIZE], 0,
|
||||
size, width, height);
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->get_size (preview, size, width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -746,12 +704,9 @@ gimp_preview_real_get_size (GimpPreview *preview,
|
|||
static gboolean
|
||||
gimp_preview_needs_popup (GimpPreview *preview)
|
||||
{
|
||||
gboolean needs_popup = FALSE;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), FALSE);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[NEEDS_POPUP], 0,
|
||||
&needs_popup);
|
||||
|
||||
return needs_popup;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->needs_popup (preview);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -763,12 +718,9 @@ gimp_preview_real_needs_popup (GimpPreview *preview)
|
|||
static GtkWidget *
|
||||
gimp_preview_create_popup (GimpPreview *preview)
|
||||
{
|
||||
GtkWidget *popup_preview = NULL;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[CREATE_POPUP], 0,
|
||||
&popup_preview);
|
||||
|
||||
return popup_preview;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->create_popup (preview);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
|
|
|
@ -36,6 +36,7 @@ extern "C" {
|
|||
#define GIMP_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
#define GIMP_IS_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_IS_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
|
||||
|
||||
typedef struct _GimpPreviewClass GimpPreviewClass;
|
||||
|
@ -71,12 +72,14 @@ struct _GimpPreviewClass
|
|||
{
|
||||
GtkPreviewClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* clicked) (GimpPreview *preview);
|
||||
void (* double_clicked) (GimpPreview *preview);
|
||||
void (* extended_clicked) (GimpPreview *preview,
|
||||
guint modifier_state);
|
||||
void (* context) (GimpPreview *preview);
|
||||
|
||||
/* virtual functions */
|
||||
void (* render) (GimpPreview *preview);
|
||||
void (* get_size) (GimpPreview *preview,
|
||||
gint size,
|
||||
|
@ -87,7 +90,7 @@ struct _GimpPreviewClass
|
|||
};
|
||||
|
||||
|
||||
GtkType gimp_preview_get_type (void);
|
||||
GType gimp_preview_get_type (void);
|
||||
|
||||
GtkWidget * gimp_preview_new (GimpViewable *viewable,
|
||||
gint size,
|
||||
|
|
|
@ -72,9 +72,6 @@ enum
|
|||
EXTENDED_CLICKED,
|
||||
CONTEXT,
|
||||
RENDER,
|
||||
GET_SIZE,
|
||||
NEEDS_POPUP,
|
||||
CREATE_POPUP,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -197,45 +194,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
|
|||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[RENDER] =
|
||||
g_signal_new ("render",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, render),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[GET_SIZE] =
|
||||
g_signal_new ("get_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, get_size),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__INT_POINTER_POINTER,
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_POINTER,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
preview_signals[NEEDS_POPUP] =
|
||||
g_signal_new ("needs_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, needs_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_BOOLEAN__VOID,
|
||||
G_TYPE_BOOLEAN, 0);
|
||||
|
||||
preview_signals[CREATE_POPUP] =
|
||||
g_signal_new ("create_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, create_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__VOID,
|
||||
G_TYPE_POINTER, 0);
|
||||
|
||||
object_class->destroy = gimp_preview_destroy;
|
||||
|
||||
widget_class->size_allocate = gimp_preview_size_allocate;
|
||||
|
@ -484,7 +442,6 @@ gimp_preview_set_size (GimpPreview *preview,
|
|||
{
|
||||
gint width, height;
|
||||
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256);
|
||||
g_return_if_fail (border_width >= 0 && border_width <= 16);
|
||||
|
@ -505,7 +462,6 @@ gimp_preview_set_size_full (GimpPreview *preview,
|
|||
gint height,
|
||||
gint border_width)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width > 0 && width <= 256);
|
||||
g_return_if_fail (height > 0 && height <= 256);
|
||||
|
@ -527,7 +483,6 @@ void
|
|||
gimp_preview_set_dot_for_dot (GimpPreview *preview,
|
||||
gboolean dot_for_dot)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
if (dot_for_dot != preview->dot_for_dot)
|
||||
|
@ -549,7 +504,6 @@ void
|
|||
gimp_preview_set_border_color (GimpPreview *preview,
|
||||
const GimpRGB *color)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
|
@ -564,7 +518,9 @@ gimp_preview_set_border_color (GimpPreview *preview,
|
|||
void
|
||||
gimp_preview_render (GimpPreview *preview)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[RENDER], 0);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->render (preview);
|
||||
}
|
||||
|
||||
static gint
|
||||
|
@ -594,13 +550,18 @@ gimp_preview_button_press_event (GtkWidget *widget,
|
|||
bevent->y);
|
||||
}
|
||||
}
|
||||
else if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
preview->press_state = 0;
|
||||
|
||||
if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (bevent->type == GDK_2BUTTON_PRESS)
|
||||
|
@ -705,16 +666,15 @@ gimp_preview_real_render (GimpPreview *preview)
|
|||
{
|
||||
TempBuf *temp_buf;
|
||||
|
||||
temp_buf = gimp_viewable_get_new_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
temp_buf = gimp_viewable_get_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
|
||||
if (temp_buf)
|
||||
{
|
||||
gimp_preview_render_and_flush (preview,
|
||||
temp_buf,
|
||||
-1);
|
||||
temp_buf_free (temp_buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -724,13 +684,11 @@ gimp_preview_get_size (GimpPreview *preview,
|
|||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width != NULL);
|
||||
g_return_if_fail (height != NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[GET_SIZE], 0,
|
||||
size, width, height);
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->get_size (preview, size, width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -746,12 +704,9 @@ gimp_preview_real_get_size (GimpPreview *preview,
|
|||
static gboolean
|
||||
gimp_preview_needs_popup (GimpPreview *preview)
|
||||
{
|
||||
gboolean needs_popup = FALSE;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), FALSE);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[NEEDS_POPUP], 0,
|
||||
&needs_popup);
|
||||
|
||||
return needs_popup;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->needs_popup (preview);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -763,12 +718,9 @@ gimp_preview_real_needs_popup (GimpPreview *preview)
|
|||
static GtkWidget *
|
||||
gimp_preview_create_popup (GimpPreview *preview)
|
||||
{
|
||||
GtkWidget *popup_preview = NULL;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[CREATE_POPUP], 0,
|
||||
&popup_preview);
|
||||
|
||||
return popup_preview;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->create_popup (preview);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
|
|
|
@ -36,6 +36,7 @@ extern "C" {
|
|||
#define GIMP_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
#define GIMP_IS_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_IS_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
|
||||
|
||||
typedef struct _GimpPreviewClass GimpPreviewClass;
|
||||
|
@ -71,12 +72,14 @@ struct _GimpPreviewClass
|
|||
{
|
||||
GtkPreviewClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* clicked) (GimpPreview *preview);
|
||||
void (* double_clicked) (GimpPreview *preview);
|
||||
void (* extended_clicked) (GimpPreview *preview,
|
||||
guint modifier_state);
|
||||
void (* context) (GimpPreview *preview);
|
||||
|
||||
/* virtual functions */
|
||||
void (* render) (GimpPreview *preview);
|
||||
void (* get_size) (GimpPreview *preview,
|
||||
gint size,
|
||||
|
@ -87,7 +90,7 @@ struct _GimpPreviewClass
|
|||
};
|
||||
|
||||
|
||||
GtkType gimp_preview_get_type (void);
|
||||
GType gimp_preview_get_type (void);
|
||||
|
||||
GtkWidget * gimp_preview_new (GimpViewable *viewable,
|
||||
gint size,
|
||||
|
|
|
@ -72,9 +72,6 @@ enum
|
|||
EXTENDED_CLICKED,
|
||||
CONTEXT,
|
||||
RENDER,
|
||||
GET_SIZE,
|
||||
NEEDS_POPUP,
|
||||
CREATE_POPUP,
|
||||
LAST_SIGNAL
|
||||
};
|
||||
|
||||
|
@ -197,45 +194,6 @@ gimp_preview_class_init (GimpPreviewClass *klass)
|
|||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[RENDER] =
|
||||
g_signal_new ("render",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, render),
|
||||
NULL, NULL,
|
||||
g_cclosure_marshal_VOID__VOID,
|
||||
G_TYPE_NONE, 0);
|
||||
|
||||
preview_signals[GET_SIZE] =
|
||||
g_signal_new ("get_size",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, get_size),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_VOID__INT_POINTER_POINTER,
|
||||
G_TYPE_NONE, 3,
|
||||
G_TYPE_INT,
|
||||
G_TYPE_POINTER,
|
||||
G_TYPE_POINTER);
|
||||
|
||||
preview_signals[NEEDS_POPUP] =
|
||||
g_signal_new ("needs_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, needs_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_BOOLEAN__VOID,
|
||||
G_TYPE_BOOLEAN, 0);
|
||||
|
||||
preview_signals[CREATE_POPUP] =
|
||||
g_signal_new ("create_popup",
|
||||
G_TYPE_FROM_CLASS (klass),
|
||||
G_SIGNAL_RUN_LAST,
|
||||
G_STRUCT_OFFSET (GimpPreviewClass, create_popup),
|
||||
NULL, NULL,
|
||||
gimp_cclosure_marshal_POINTER__VOID,
|
||||
G_TYPE_POINTER, 0);
|
||||
|
||||
object_class->destroy = gimp_preview_destroy;
|
||||
|
||||
widget_class->size_allocate = gimp_preview_size_allocate;
|
||||
|
@ -484,7 +442,6 @@ gimp_preview_set_size (GimpPreview *preview,
|
|||
{
|
||||
gint width, height;
|
||||
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (preview_size > 0 && preview_size <= 256);
|
||||
g_return_if_fail (border_width >= 0 && border_width <= 16);
|
||||
|
@ -505,7 +462,6 @@ gimp_preview_set_size_full (GimpPreview *preview,
|
|||
gint height,
|
||||
gint border_width)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width > 0 && width <= 256);
|
||||
g_return_if_fail (height > 0 && height <= 256);
|
||||
|
@ -527,7 +483,6 @@ void
|
|||
gimp_preview_set_dot_for_dot (GimpPreview *preview,
|
||||
gboolean dot_for_dot)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
if (dot_for_dot != preview->dot_for_dot)
|
||||
|
@ -549,7 +504,6 @@ void
|
|||
gimp_preview_set_border_color (GimpPreview *preview,
|
||||
const GimpRGB *color)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (color != NULL);
|
||||
|
||||
|
@ -564,7 +518,9 @@ gimp_preview_set_border_color (GimpPreview *preview,
|
|||
void
|
||||
gimp_preview_render (GimpPreview *preview)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[RENDER], 0);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->render (preview);
|
||||
}
|
||||
|
||||
static gint
|
||||
|
@ -594,13 +550,18 @@ gimp_preview_button_press_event (GtkWidget *widget,
|
|||
bevent->y);
|
||||
}
|
||||
}
|
||||
else if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
preview->press_state = 0;
|
||||
|
||||
if (bevent->button == 3)
|
||||
{
|
||||
g_signal_emit (G_OBJECT (widget), preview_signals[CONTEXT], 0);
|
||||
}
|
||||
else
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (bevent->type == GDK_2BUTTON_PRESS)
|
||||
|
@ -705,16 +666,15 @@ gimp_preview_real_render (GimpPreview *preview)
|
|||
{
|
||||
TempBuf *temp_buf;
|
||||
|
||||
temp_buf = gimp_viewable_get_new_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
temp_buf = gimp_viewable_get_preview (preview->viewable,
|
||||
preview->width,
|
||||
preview->height);
|
||||
|
||||
if (temp_buf)
|
||||
{
|
||||
gimp_preview_render_and_flush (preview,
|
||||
temp_buf,
|
||||
-1);
|
||||
temp_buf_free (temp_buf);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -724,13 +684,11 @@ gimp_preview_get_size (GimpPreview *preview,
|
|||
gint *width,
|
||||
gint *height)
|
||||
{
|
||||
g_return_if_fail (preview != NULL);
|
||||
g_return_if_fail (GIMP_IS_PREVIEW (preview));
|
||||
g_return_if_fail (width != NULL);
|
||||
g_return_if_fail (height != NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[GET_SIZE], 0,
|
||||
size, width, height);
|
||||
GIMP_PREVIEW_GET_CLASS (preview)->get_size (preview, size, width, height);
|
||||
}
|
||||
|
||||
static void
|
||||
|
@ -746,12 +704,9 @@ gimp_preview_real_get_size (GimpPreview *preview,
|
|||
static gboolean
|
||||
gimp_preview_needs_popup (GimpPreview *preview)
|
||||
{
|
||||
gboolean needs_popup = FALSE;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), FALSE);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[NEEDS_POPUP], 0,
|
||||
&needs_popup);
|
||||
|
||||
return needs_popup;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->needs_popup (preview);
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -763,12 +718,9 @@ gimp_preview_real_needs_popup (GimpPreview *preview)
|
|||
static GtkWidget *
|
||||
gimp_preview_create_popup (GimpPreview *preview)
|
||||
{
|
||||
GtkWidget *popup_preview = NULL;
|
||||
g_return_val_if_fail (GIMP_IS_PREVIEW (preview), NULL);
|
||||
|
||||
g_signal_emit (G_OBJECT (preview), preview_signals[CREATE_POPUP], 0,
|
||||
&popup_preview);
|
||||
|
||||
return popup_preview;
|
||||
return GIMP_PREVIEW_GET_CLASS (preview)->create_popup (preview);
|
||||
}
|
||||
|
||||
static GtkWidget *
|
||||
|
|
|
@ -36,6 +36,7 @@ extern "C" {
|
|||
#define GIMP_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
#define GIMP_IS_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE (obj, GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_IS_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_PREVIEW))
|
||||
#define GIMP_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_PREVIEW, GimpPreviewClass))
|
||||
|
||||
|
||||
typedef struct _GimpPreviewClass GimpPreviewClass;
|
||||
|
@ -71,12 +72,14 @@ struct _GimpPreviewClass
|
|||
{
|
||||
GtkPreviewClass parent_class;
|
||||
|
||||
/* signals */
|
||||
void (* clicked) (GimpPreview *preview);
|
||||
void (* double_clicked) (GimpPreview *preview);
|
||||
void (* extended_clicked) (GimpPreview *preview,
|
||||
guint modifier_state);
|
||||
void (* context) (GimpPreview *preview);
|
||||
|
||||
/* virtual functions */
|
||||
void (* render) (GimpPreview *preview);
|
||||
void (* get_size) (GimpPreview *preview,
|
||||
gint size,
|
||||
|
@ -87,7 +90,7 @@ struct _GimpPreviewClass
|
|||
};
|
||||
|
||||
|
||||
GtkType gimp_preview_get_type (void);
|
||||
GType gimp_preview_get_type (void);
|
||||
|
||||
GtkWidget * gimp_preview_new (GimpViewable *viewable,
|
||||
gint size,
|
||||
|
|
Loading…
Reference in New Issue