1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
|
/* The GIMP -- an image manipulation program
* Copyright (C) 1995-1997 Spencer Kimball and Peter Mattis
*
* gimpcontainer.h
* Copyright (C) 2001 Michael Natterer <mitch@gimp.org>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#ifndef __GIMP_CONTAINER_H__
#define __GIMP_CONTAINER_H__
#include "gimpobject.h"
#define GIMP_TYPE_CONTAINER (gimp_container_get_type ())
#define GIMP_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GIMP_TYPE_CONTAINER, GimpContainer))
#define GIMP_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GIMP_TYPE_CONTAINER, GimpContainerClass))
#define GIMP_IS_CONTAINER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GIMP_TYPE_CONTAINER))
#define GIMP_IS_CONTAINER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GIMP_TYPE_CONTAINER))
#define GIMP_CONTAINER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GIMP_TYPE_CONTAINER, GimpContainerClass))
typedef struct _GimpContainerClass GimpContainerClass;
struct _GimpContainer
{
GimpObject parent_instance;
/* public, read-only */
GType children_type;
GimpContainerPolicy policy;
gint num_children;
/* private */
GList *handlers;
gint freeze_count;
};
struct _GimpContainerClass
{
GimpObjectClass parent_class;
/* signals */
void (* add) (GimpContainer *container,
GimpObject *object);
void (* remove) (GimpContainer *container,
GimpObject *object);
void (* reorder) (GimpContainer *container,
GimpObject *object,
gint new_index);
void (* freeze) (GimpContainer *container);
void (* thaw) (GimpContainer *container);
/* virtual functions */
void (* clear) (GimpContainer *container);
gboolean (* have) (const GimpContainer *container,
const GimpObject *object);
void (* foreach) (const GimpContainer *container,
GFunc func,
gpointer user_data);
GimpObject * (* get_child_by_name) (const GimpContainer *container,
const gchar *name);
GimpObject * (* get_child_by_index) (const GimpContainer *container,
gint index);
gint (* get_child_index) (const GimpContainer *container,
const GimpObject *object);
};
GType gimp_container_get_type (void) G_GNUC_CONST;
GType gimp_container_children_type (const GimpContainer *container);
GimpContainerPolicy gimp_container_policy (const GimpContainer *container);
gint gimp_container_num_children (const GimpContainer *container);
gboolean gimp_container_add (GimpContainer *container,
GimpObject *object);
gboolean gimp_container_remove (GimpContainer *container,
GimpObject *object);
gboolean gimp_container_insert (GimpContainer *container,
GimpObject *object,
gint new_index);
gboolean gimp_container_reorder (GimpContainer *container,
GimpObject *object,
gint new_index);
void gimp_container_freeze (GimpContainer *container);
void gimp_container_thaw (GimpContainer *container);
gboolean gimp_container_frozen (GimpContainer *container);
void gimp_container_clear (GimpContainer *container);
gboolean gimp_container_have (const GimpContainer *container,
GimpObject *object);
void gimp_container_foreach (const GimpContainer *container,
GFunc func,
gpointer user_data);
GimpObject * gimp_container_get_child_by_name (const GimpContainer *container,
const gchar *name);
GimpObject * gimp_container_get_child_by_index (const GimpContainer *container,
gint index);
gint gimp_container_get_child_index (const GimpContainer *container,
const GimpObject *object);
gchar ** gimp_container_get_name_array (const GimpContainer *container,
gint *length);
GQuark gimp_container_add_handler (GimpContainer *container,
const gchar *signame,
GCallback callback,
gpointer callback_data);
void gimp_container_remove_handler (GimpContainer *container,
GQuark id);
#endif /* __GIMP_CONTAINER_H__ */
|