glade-property.h 7.8 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

Jose Maria Celorio's avatar
Jose Maria Celorio committed
18 19 20 21
/* 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.
 */
22 23
struct _GladeProperty
{
24 25
	GObject             parent_instance;

26
	GladePropertyClass *klass;     /* A pointer to the GladeProperty that this
27 28
					* setting specifies
					*/
29
	GladeWidget        *widget;    /* A pointer to the GladeWidget that this
30 31 32 33 34 35 36 37 38
					* GladeProperty is modifying
					*/
	
	GValue             *value;     /* The value of the property
					*/

	gboolean            sensitive; /* Whether this property is sensitive (if the
					* property is "optional" this takes precedence).
					*/
39 40 41
	gchar              *insensitive_tooltip; /* Tooltip to display when in insensitive state
						  * (used to explain why the property is insensitive)
						  */
42 43 44 45 46 47 48 49 50

	gboolean            enabled;   /* Enabled is a flag that is used for GladeProperties
					* that have the optional flag set to let us know
					* if this widget has this GladeSetting 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.
					*/
51

52 53 54 55 56 57 58
	gboolean            save_always; /* 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).
					  */

59 60 61 62 63
	/* Used only for translatable strings. */
	gboolean  i18n_translatable;
	gboolean  i18n_has_context;
	gchar    *i18n_comment;
		
64 65
	gboolean     syncing;    /* Avoid recursion while synchronizing object with value.
				  */
66 67 68
};


69
struct _GladePropertyKlass
70 71 72 73
{
	GObjectClass  parent_class;

	/* Class methods */
74
	GladeProperty *         (* dup)                   (GladeProperty *, GladeWidget *);
75
	gboolean                (* equals_value)          (GladeProperty *, const GValue *);
76
	void                    (* set_value)             (GladeProperty *, const GValue *);
77
	void                    (* get_value)             (GladeProperty *, GValue *);
78
	void                    (* get_default)           (GladeProperty *, GValue *);
79
	void                    (* sync)                  (GladeProperty *);
80
	void                    (* load)                  (GladeProperty *);
81
	G_CONST_RETURN gchar *  (* get_tooltip)           (GladeProperty *);
82 83

	/* Signals */
84
	void             (* value_changed)         (GladeProperty *, GValue *, GValue *);
85
	void             (* tooltip_changed)       (GladeProperty *, const gchar *);
86
};
Chema Celorio's avatar
Chema Celorio committed
87

88

89
GType                   glade_property_get_type              (void) G_GNUC_CONST;
90

91
GladeProperty          *glade_property_new                   (GladePropertyClass *klass,
92
							      GladeWidget        *widget,
93
							      GValue             *value);
94

95
GladeProperty          *glade_property_dup                   (GladeProperty      *template_prop,
96
							      GladeWidget        *widget);
97

98
void                    glade_property_reset                 (GladeProperty      *property);
99

100
void                    glade_property_original_reset    (GladeProperty      *property);
101

102
gboolean                glade_property_default               (GladeProperty      *property);
103

104
gboolean                glade_property_original_default  (GladeProperty      *property);
105

106
gboolean                glade_property_equals_value          (GladeProperty      *property, 
107
							      const GValue       *value);
108

109 110
gboolean                glade_property_equals                (GladeProperty      *property, 
							      ...);
111

112 113
void                    glade_property_set_value             (GladeProperty      *property, 
							      const GValue       *value);
114

115 116
void                    glade_property_set_va_list           (GladeProperty      *property,
							      va_list             vl);
117

118 119
void                    glade_property_set                   (GladeProperty      *property,
							      ...);
120

121 122
void                    glade_property_get_value             (GladeProperty      *property, 
							      GValue             *value);
123

124 125
void                    glade_property_get_default           (GladeProperty      *property, 
							      GValue             *value);
126

127 128
void                    glade_property_get_va_list           (GladeProperty      *property,
							      va_list             vl);
129

130 131
void                    glade_property_get                   (GladeProperty      *property, 
							      ...);
132

Tristan Van Berkom's avatar
Tristan Van Berkom committed
133 134
void                    glade_property_add_object            (GladeProperty      *property,
							      GObject            *object);
135

Tristan Van Berkom's avatar
Tristan Van Berkom committed
136 137
void                    glade_property_remove_object         (GladeProperty      *property,
							      GObject            *object);
138

139
void                    glade_property_sync                  (GladeProperty      *property);
140

141
void                    glade_property_load                  (GladeProperty      *property);
142

143
void                    glade_property_read                  (GladeProperty      *property,
Tristan Van Berkom's avatar
Tristan Van Berkom committed
144
							      GladeProject       *project,
145
							      GladeXmlNode       *node);
146

147 148 149
void                    glade_property_write                 (GladeProperty      *property,	
							      GladeXmlContext    *context,
							      GladeXmlNode       *node);
150

151
G_CONST_RETURN gchar   *glade_property_get_tooltip           (GladeProperty      *property);
152

153 154 155
void                    glade_property_set_sensitive         (GladeProperty      *property,
							      gboolean            sensitive,
							      const gchar        *reason);
156

157
gboolean                glade_property_get_sensitive         (GladeProperty      *property);
158

159

160 161
void                    glade_property_set_save_always       (GladeProperty      *property,
							      gboolean            setting);
162

163 164
gboolean                glade_property_get_save_always       (GladeProperty      *property);

165

166 167
void                    glade_property_set_enabled           (GladeProperty      *property,
							      gboolean            enabled);
168

169 170
gboolean                glade_property_get_enabled           (GladeProperty      *property);

171

172 173
void                    glade_property_i18n_set_comment      (GladeProperty      *property, 
							      const gchar        *str);
174

175
G_CONST_RETURN gchar   *glade_property_i18n_get_comment      (GladeProperty      *property);
176

177 178
void                    glade_property_i18n_set_translatable (GladeProperty      *property,
							      gboolean            translatable);
179

180
gboolean                glade_property_i18n_get_translatable (GladeProperty      *property);
181

182 183
void                    glade_property_i18n_set_has_context  (GladeProperty      *property,
							      gboolean            has_context);
184

185
gboolean                glade_property_i18n_get_has_context  (GladeProperty      *property);
Jose Maria Celorio's avatar
Jose Maria Celorio committed
186

187

188
void                    glade_property_push_superuser        (void);
189

190
void                    glade_property_pop_superuser         (void);
191

192 193
gboolean                glade_property_superuser             (void);

Jose Maria Celorio's avatar
Jose Maria Celorio committed
194 195 196
G_END_DECLS

#endif /* __GLADE_PROPERTY_H__ */