1/* GTK - The GIMP Toolkit
2 * Copyright (C) 2006-2007 Async Open Source,
3 * Johan Dahlin <jdahlin@async.com.br>
4 *
5 * This library is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Library General Public
7 * License as published by the Free Software Foundation; either
8 * version 2 of the License, or (at your option) any later version.
9 *
10 * This library is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Library General Public License for more details.
14 *
15 * You should have received a copy of the GNU Library General Public
16 * License along with this library. If not, see <http://www.gnu.org/licenses/>.
17 */
18
19#ifndef __GTK_BUILDER_H__
20#define __GTK_BUILDER_H__
21
22#if !defined (__GTK_H_INSIDE__) && !defined (GTK_COMPILATION)
23#error "Only <gtk/gtk.h> can be included directly."
24#endif
25
26#include <gtk/gtkbuilderscope.h>
27#include <gtk/gtkwidget.h>
28
29G_BEGIN_DECLS
30
31#define GTK_TYPE_BUILDER (gtk_builder_get_type ())
32#define GTK_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_BUILDER, GtkBuilder))
33#define GTK_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_BUILDER, GtkBuilderClass))
34#define GTK_IS_BUILDER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GTK_TYPE_BUILDER))
35#define GTK_IS_BUILDER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_BUILDER))
36#define GTK_BUILDER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_BUILDER, GtkBuilderClass))
37
38#define GTK_BUILDER_ERROR (gtk_builder_error_quark ())
39
40typedef struct _GtkBuilderClass GtkBuilderClass;
41
42/**
43 * GtkBuilderError:
44 * @GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION: A type-func attribute didn’t name
45 * a function that returns a `GType`.
46 * @GTK_BUILDER_ERROR_UNHANDLED_TAG: The input contained a tag that `GtkBuilder`
47 * can’t handle.
48 * @GTK_BUILDER_ERROR_MISSING_ATTRIBUTE: An attribute that is required by
49 * `GtkBuilder` was missing.
50 * @GTK_BUILDER_ERROR_INVALID_ATTRIBUTE: `GtkBuilder` found an attribute that
51 * it doesn’t understand.
52 * @GTK_BUILDER_ERROR_INVALID_TAG: `GtkBuilder` found a tag that
53 * it doesn’t understand.
54 * @GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE: A required property value was
55 * missing.
56 * @GTK_BUILDER_ERROR_INVALID_VALUE: `GtkBuilder` couldn’t parse
57 * some attribute value.
58 * @GTK_BUILDER_ERROR_VERSION_MISMATCH: The input file requires a newer version
59 * of GTK.
60 * @GTK_BUILDER_ERROR_DUPLICATE_ID: An object id occurred twice.
61 * @GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED: A specified object type is of the same type or
62 * derived from the type of the composite class being extended with builder XML.
63 * @GTK_BUILDER_ERROR_TEMPLATE_MISMATCH: The wrong type was specified in a composite class’s template XML
64 * @GTK_BUILDER_ERROR_INVALID_PROPERTY: The specified property is unknown for the object class.
65 * @GTK_BUILDER_ERROR_INVALID_SIGNAL: The specified signal is unknown for the object class.
66 * @GTK_BUILDER_ERROR_INVALID_ID: An object id is unknown.
67 * @GTK_BUILDER_ERROR_INVALID_FUNCTION: A function could not be found. This often happens
68 * when symbols are set to be kept private. Compiling code with -rdynamic or using the
69 * `gmodule-export-2.0` pkgconfig module can fix this problem.
70 *
71 * Error codes that identify various errors that can occur while using
72 * `GtkBuilder`.
73 */
74typedef enum
75{
76 GTK_BUILDER_ERROR_INVALID_TYPE_FUNCTION,
77 GTK_BUILDER_ERROR_UNHANDLED_TAG,
78 GTK_BUILDER_ERROR_MISSING_ATTRIBUTE,
79 GTK_BUILDER_ERROR_INVALID_ATTRIBUTE,
80 GTK_BUILDER_ERROR_INVALID_TAG,
81 GTK_BUILDER_ERROR_MISSING_PROPERTY_VALUE,
82 GTK_BUILDER_ERROR_INVALID_VALUE,
83 GTK_BUILDER_ERROR_VERSION_MISMATCH,
84 GTK_BUILDER_ERROR_DUPLICATE_ID,
85 GTK_BUILDER_ERROR_OBJECT_TYPE_REFUSED,
86 GTK_BUILDER_ERROR_TEMPLATE_MISMATCH,
87 GTK_BUILDER_ERROR_INVALID_PROPERTY,
88 GTK_BUILDER_ERROR_INVALID_SIGNAL,
89 GTK_BUILDER_ERROR_INVALID_ID,
90 GTK_BUILDER_ERROR_INVALID_FUNCTION
91} GtkBuilderError;
92
93GDK_AVAILABLE_IN_ALL
94GQuark gtk_builder_error_quark (void);
95
96GDK_AVAILABLE_IN_ALL
97GType gtk_builder_get_type (void) G_GNUC_CONST;
98GDK_AVAILABLE_IN_ALL
99GtkBuilder* gtk_builder_new (void);
100
101GDK_AVAILABLE_IN_ALL
102gboolean gtk_builder_add_from_file (GtkBuilder *builder,
103 const char *filename,
104 GError **error);
105GDK_AVAILABLE_IN_ALL
106gboolean gtk_builder_add_from_resource (GtkBuilder *builder,
107 const char *resource_path,
108 GError **error);
109GDK_AVAILABLE_IN_ALL
110gboolean gtk_builder_add_from_string (GtkBuilder *builder,
111 const char *buffer,
112 gssize length,
113 GError **error);
114GDK_AVAILABLE_IN_ALL
115gboolean gtk_builder_add_objects_from_file (GtkBuilder *builder,
116 const char *filename,
117 const char **object_ids,
118 GError **error);
119GDK_AVAILABLE_IN_ALL
120gboolean gtk_builder_add_objects_from_resource(GtkBuilder *builder,
121 const char *resource_path,
122 const char **object_ids,
123 GError **error);
124GDK_AVAILABLE_IN_ALL
125gboolean gtk_builder_add_objects_from_string (GtkBuilder *builder,
126 const char *buffer,
127 gssize length,
128 const char **object_ids,
129 GError **error);
130GDK_AVAILABLE_IN_ALL
131GObject* gtk_builder_get_object (GtkBuilder *builder,
132 const char *name);
133GDK_AVAILABLE_IN_ALL
134GSList* gtk_builder_get_objects (GtkBuilder *builder);
135GDK_AVAILABLE_IN_ALL
136void gtk_builder_expose_object (GtkBuilder *builder,
137 const char *name,
138 GObject *object);
139GDK_AVAILABLE_IN_ALL
140GObject * gtk_builder_get_current_object (GtkBuilder *builder);
141GDK_AVAILABLE_IN_ALL
142void gtk_builder_set_current_object (GtkBuilder *builder,
143 GObject *current_object);
144GDK_AVAILABLE_IN_ALL
145void gtk_builder_set_translation_domain (GtkBuilder *builder,
146 const char *domain);
147GDK_AVAILABLE_IN_ALL
148const char * gtk_builder_get_translation_domain (GtkBuilder *builder);
149GDK_AVAILABLE_IN_ALL
150GtkBuilderScope *gtk_builder_get_scope (GtkBuilder *builder);
151GDK_AVAILABLE_IN_ALL
152void gtk_builder_set_scope (GtkBuilder *builder,
153 GtkBuilderScope *scope);
154GDK_AVAILABLE_IN_ALL
155GType gtk_builder_get_type_from_name (GtkBuilder *builder,
156 const char *type_name);
157
158GDK_AVAILABLE_IN_ALL
159gboolean gtk_builder_value_from_string (GtkBuilder *builder,
160 GParamSpec *pspec,
161 const char *string,
162 GValue *value,
163 GError **error);
164GDK_AVAILABLE_IN_ALL
165gboolean gtk_builder_value_from_string_type (GtkBuilder *builder,
166 GType type,
167 const char *string,
168 GValue *value,
169 GError **error);
170GDK_AVAILABLE_IN_ALL
171GtkBuilder * gtk_builder_new_from_file (const char *filename);
172GDK_AVAILABLE_IN_ALL
173GtkBuilder * gtk_builder_new_from_resource (const char *resource_path);
174GDK_AVAILABLE_IN_ALL
175GtkBuilder * gtk_builder_new_from_string (const char *string,
176 gssize length);
177
178GDK_AVAILABLE_IN_ALL
179GClosure * gtk_builder_create_closure (GtkBuilder *builder,
180 const char *function_name,
181 GtkBuilderClosureFlags flags,
182 GObject *object,
183 GError **error);
184
185
186
187/**
188 * GTK_BUILDER_WARN_INVALID_CHILD_TYPE:
189 * @object: the `GtkBuildable` on which the warning occurred
190 * @type: the unexpected type value
191 *
192 * This macro should be used to emit a warning about and unexpected @type value
193 * in a `GtkBuildable` add_child implementation.
194 */
195#define GTK_BUILDER_WARN_INVALID_CHILD_TYPE(object, type) \
196 g_warning ("'%s' is not a valid child type of '%s'", type, g_type_name (G_OBJECT_TYPE (object)))
197
198GDK_AVAILABLE_IN_ALL
199gboolean gtk_builder_extend_with_template (GtkBuilder *builder,
200 GObject *object,
201 GType template_type,
202 const char *buffer,
203 gssize length,
204 GError **error);
205
206G_END_DECLS
207
208#endif /* __GTK_BUILDER_H__ */
209

source code of gtk/gtk/gtkbuilder.h