File: gimpcontainer.h

package info (click to toggle)
gimp 2.2.13-1etch4
  • links: PTS
  • area: main
  • in suites: etch
  • size: 94,832 kB
  • ctags: 47,113
  • sloc: ansic: 524,858; xml: 36,798; lisp: 9,870; sh: 9,409; makefile: 7,923; python: 2,674; perl: 2,589; yacc: 520; lex: 334
file content (130 lines) | stat: -rw-r--r-- 5,552 bytes parent folder | download | duplicates (3)
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__ */