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 29 G_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 40 typedef 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 */ 74 typedef 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 93 GDK_AVAILABLE_IN_ALL 94 GQuark gtk_builder_error_quark (void); 95 96 GDK_AVAILABLE_IN_ALL 97 GType gtk_builder_get_type (void) G_GNUC_CONST; 98 GDK_AVAILABLE_IN_ALL 99 GtkBuilder* gtk_builder_new (void); 100 101 GDK_AVAILABLE_IN_ALL 102 gboolean gtk_builder_add_from_file (GtkBuilder *builder, 103 const char *filename, 104 GError **error); 105 GDK_AVAILABLE_IN_ALL 106 gboolean gtk_builder_add_from_resource (GtkBuilder *builder, 107 const char *resource_path, 108 GError **error); 109 GDK_AVAILABLE_IN_ALL 110 gboolean gtk_builder_add_from_string (GtkBuilder *builder, 111 const char *buffer, 112 gssize length, 113 GError **error); 114 GDK_AVAILABLE_IN_ALL 115 gboolean gtk_builder_add_objects_from_file (GtkBuilder *builder, 116 const char *filename, 117 const char **object_ids, 118 GError **error); 119 GDK_AVAILABLE_IN_ALL 120 gboolean gtk_builder_add_objects_from_resource(GtkBuilder *builder, 121 const char *resource_path, 122 const char **object_ids, 123 GError **error); 124 GDK_AVAILABLE_IN_ALL 125 gboolean gtk_builder_add_objects_from_string (GtkBuilder *builder, 126 const char *buffer, 127 gssize length, 128 const char **object_ids, 129 GError **error); 130 GDK_AVAILABLE_IN_ALL 131 GObject* gtk_builder_get_object (GtkBuilder *builder, 132 const char *name); 133 GDK_AVAILABLE_IN_ALL 134 GSList* gtk_builder_get_objects (GtkBuilder *builder); 135 GDK_AVAILABLE_IN_ALL 136 void gtk_builder_expose_object (GtkBuilder *builder, 137 const char *name, 138 GObject *object); 139 GDK_AVAILABLE_IN_ALL 140 GObject * gtk_builder_get_current_object (GtkBuilder *builder); 141 GDK_AVAILABLE_IN_ALL 142 void gtk_builder_set_current_object (GtkBuilder *builder, 143 GObject *current_object); 144 GDK_AVAILABLE_IN_ALL 145 void gtk_builder_set_translation_domain (GtkBuilder *builder, 146 const char *domain); 147 GDK_AVAILABLE_IN_ALL 148 const char * gtk_builder_get_translation_domain (GtkBuilder *builder); 149 GDK_AVAILABLE_IN_ALL 150 GtkBuilderScope *gtk_builder_get_scope (GtkBuilder *builder); 151 GDK_AVAILABLE_IN_ALL 152 void gtk_builder_set_scope (GtkBuilder *builder, 153 GtkBuilderScope *scope); 154 GDK_AVAILABLE_IN_ALL 155 GType gtk_builder_get_type_from_name (GtkBuilder *builder, 156 const char *type_name); 157 158 GDK_AVAILABLE_IN_ALL 159 gboolean gtk_builder_value_from_string (GtkBuilder *builder, 160 GParamSpec *pspec, 161 const char *string, 162 GValue *value, 163 GError **error); 164 GDK_AVAILABLE_IN_ALL 165 gboolean gtk_builder_value_from_string_type (GtkBuilder *builder, 166 GType type, 167 const char *string, 168 GValue *value, 169 GError **error); 170 GDK_AVAILABLE_IN_ALL 171 GtkBuilder * gtk_builder_new_from_file (const char *filename); 172 GDK_AVAILABLE_IN_ALL 173 GtkBuilder * gtk_builder_new_from_resource (const char *resource_path); 174 GDK_AVAILABLE_IN_ALL 175 GtkBuilder * gtk_builder_new_from_string (const char *string, 176 gssize length); 177 178 GDK_AVAILABLE_IN_ALL 179 GClosure * 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 198 GDK_AVAILABLE_IN_ALL 199 gboolean 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 206 G_END_DECLS 207 208 #endif /* __GTK_BUILDER_H__ */ 209