glade-property.h 8.48 KB
Newer Older
Jose Maria Celorio's avatar
Jose Maria Celorio committed
1 2 3 4
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
#ifndef __GLADE_PROPERTY_H__
#define __GLADE_PROPERTY_H__

5 6
#include <glib-object.h>

Jose Maria Celorio's avatar
Jose Maria Celorio committed
7 8
G_BEGIN_DECLS

9 10
#define GLADE_TYPE_PROPERTY            (glade_property_get_type())
#define GLADE_PROPERTY(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_PROPERTY, GladeProperty))
11
#define GLADE_PROPERTY_KLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_PROPERTY, GladePropertyKlass))
12
#define GLADE_IS_PROPERTY(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_PROPERTY))
13 14
#define GLADE_IS_PROPERTY_KLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_PROPERTY))
#define GLADE_PROPERTY_GET_KLASS(o)    (G_TYPE_INSTANCE_GET_CLASS ((o), GLADE_PROPERTY, GladePropertyKlass))
15

16
typedef struct _GladePropertyKlass GladePropertyKlass;
Tristan Van Berkom's avatar
Tristan Van Berkom committed
17

18
typedef enum {
19 20 21 22
	GLADE_STATE_NORMAL              = 0,
	GLADE_STATE_CHANGED             = (1 << 0),
	GLADE_STATE_UNSUPPORTED         = (1 << 1),
	GLADE_STATE_SUPPORT_DISABLED    = (1 << 2)
23 24
} GladePropertyState;

Jose Maria Celorio's avatar
Jose Maria Celorio committed
25 26 27 28
/* A GladeProperty is an instance of a GladePropertyClass.
 * There will be one GladePropertyClass for "GtkLabel->label" but one
 * GladeProperty for each GtkLabel in the GladeProject.
 */
29 30
struct _GladeProperty
{
31 32
	GObject             parent_instance;

33
	GladePropertyClass *klass;     /* A pointer to the GladeProperty that this
34 35
					* setting specifies
					*/
36
	GladeWidget        *widget;    /* A pointer to the GladeWidget that this
37 38
					* GladeProperty is modifying
					*/
39 40 41

	GladePropertyState  state;     /* Current property state, used by editing widgets.
					*/
42 43 44 45
	
	GValue             *value;     /* The value of the property
					*/

46
	gchar              *insensitive_tooltip; /* Tooltip to display when in insensitive state
47 48
						  * (used to explain why the property is 
						  *  insensitive)
49
						  */
50

51 52 53 54 55
	gchar              *support_warning; /* Tooltip to display when the property
					      * has format problems
					      * (used to explain why the property is 
					      *  insensitive)
					      */
56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
	guint               support_disabled : 1; /* Whether this property is disabled due
						   * to format conflicts
						   */

	guint               sensitive : 1; /* Whether this property is sensitive (if the
					    * property is "optional" this takes precedence).
					    */

	guint               enabled : 1;   /* Enabled is a flag that is used for GladeProperties
					    * that have the optional flag set to let us know
					    * if this widget has this setting enabled or
					    * not. (Like default size, it can be specified or
					    * unspecified). This flag also sets the state
					    * of the property->input state for the loaded
					    * widget.
					    */

	guint               save_always : 1; /* Used to make a special case exception and always
					      * save this property regardless of what the default
					      * value is (used for some special cases like properties
					      * that are assigned initial values in composite widgets
					      * or derived widget code).
					      */
79

80
	/* Used only for translatable strings. */
81
	guint     i18n_translatable : 1;
82
	gchar    *i18n_context;
83 84
	gchar    *i18n_comment;
		
85
	gint      syncing;  /* Avoid recursion while synchronizing object with value */
86
	gint      sync_tolerance;
87 88 89
};


90
struct _GladePropertyKlass
91 92 93 94
{
	GObjectClass  parent_class;

	/* Class methods */
95
	GladeProperty *         (* dup)                   (GladeProperty *, GladeWidget *);
96
	gboolean                (* equals_value)          (GladeProperty *, const GValue *);
97
	gboolean                (* set_value)             (GladeProperty *, const GValue *);
98
	void                    (* get_value)             (GladeProperty *, GValue *);
99
	void                    (* sync)                  (GladeProperty *);
100
	void                    (* load)                  (GladeProperty *);
101 102

	/* Signals */
103
	void             (* value_changed)         (GladeProperty *, GValue *, GValue *);
104 105
	void             (* tooltip_changed)       (GladeProperty *, const gchar *, 
						    const gchar   *, const gchar *);
106
};
Chema Celorio's avatar
Chema Celorio committed
107

108

109
GType                   glade_property_get_type              (void) G_GNUC_CONST;
110

111
GladeProperty          *glade_property_new                   (GladePropertyClass *klass,
112
							      GladeWidget        *widget,
113
							      GValue             *value);
114

115
GladeProperty          *glade_property_dup                   (GladeProperty      *template_prop,
116
							      GladeWidget        *widget);
117

118
void                    glade_property_reset                 (GladeProperty      *property);
119

120
void                    glade_property_original_reset        (GladeProperty      *property);
121

122
gboolean                glade_property_default               (GladeProperty      *property);
123

124
gboolean                glade_property_original_default      (GladeProperty      *property);
125

126
gboolean                glade_property_equals_value          (GladeProperty      *property, 
127
							      const GValue       *value);
128

129 130
gboolean                glade_property_equals                (GladeProperty      *property, 
							      ...);
131

132
gboolean                glade_property_set_value             (GladeProperty      *property, 
133
							      const GValue       *value);
134

135
gboolean                glade_property_set_va_list           (GladeProperty      *property,
136
							      va_list             vl);
137

138
gboolean                glade_property_set                   (GladeProperty      *property,
139
							      ...);
140

141 142
void                    glade_property_get_value             (GladeProperty      *property, 
							      GValue             *value);
143

144 145
void                    glade_property_get_default           (GladeProperty      *property, 
							      GValue             *value);
146

147 148
void                    glade_property_get_va_list           (GladeProperty      *property,
							      va_list             vl);
149

150 151
void                    glade_property_get                   (GladeProperty      *property, 
							      ...);
152

Tristan Van Berkom's avatar
Tristan Van Berkom committed
153 154
void                    glade_property_add_object            (GladeProperty      *property,
							      GObject            *object);
155

Tristan Van Berkom's avatar
Tristan Van Berkom committed
156 157
void                    glade_property_remove_object         (GladeProperty      *property,
							      GObject            *object);
158

159
void                    glade_property_sync                  (GladeProperty      *property);
160

161
void                    glade_property_load                  (GladeProperty      *property);
162

163
void                    glade_property_read                  (GladeProperty      *property,
Tristan Van Berkom's avatar
Tristan Van Berkom committed
164
							      GladeProject       *project,
165
							      GladeXmlNode       *node);
166

167 168 169
void                    glade_property_write                 (GladeProperty      *property,	
							      GladeXmlContext    *context,
							      GladeXmlNode       *node);
170

171 172 173
void                    glade_property_set_sensitive         (GladeProperty      *property,
							      gboolean            sensitive,
							      const gchar        *reason);
174

175
void                    glade_property_set_support_warning   (GladeProperty      *property,
176
							      gboolean            disable,
177 178
							      const gchar        *reason);

179
gboolean                glade_property_get_sensitive         (GladeProperty      *property);
180

181

182 183
void                    glade_property_set_save_always       (GladeProperty      *property,
							      gboolean            setting);
184

185 186
gboolean                glade_property_get_save_always       (GladeProperty      *property);

187

188 189
void                    glade_property_set_enabled           (GladeProperty      *property,
							      gboolean            enabled);
190

191 192
gboolean                glade_property_get_enabled           (GladeProperty      *property);

193

194 195
void                    glade_property_i18n_set_comment      (GladeProperty      *property, 
							      const gchar        *str);
196

197
G_CONST_RETURN gchar   *glade_property_i18n_get_comment      (GladeProperty      *property);
198

199 200 201 202 203
void                    glade_property_i18n_set_context      (GladeProperty      *property, 
							      const gchar        *str);

G_CONST_RETURN gchar   *glade_property_i18n_get_context      (GladeProperty      *property);

204 205
void                    glade_property_i18n_set_translatable (GladeProperty      *property,
							      gboolean            translatable);
206

207
gboolean                glade_property_i18n_get_translatable (GladeProperty      *property);
208

209
void                    glade_property_push_superuser        (void);
210

211
void                    glade_property_pop_superuser         (void);
212

213 214
gboolean                glade_property_superuser             (void);

Jose Maria Celorio's avatar
Jose Maria Celorio committed
215 216 217
G_END_DECLS

#endif /* __GLADE_PROPERTY_H__ */