1 #ifndef __GLADE_PROPERTY_H__
2 #define __GLADE_PROPERTY_H__
3 
4 #include <glib-object.h>
5 
6 G_BEGIN_DECLS
7 
8 #define GLADE_TYPE_PROPERTY            (glade_property_get_type())
9 #define GLADE_PROPERTY(obj)            (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_PROPERTY, GladeProperty))
10 #define GLADE_PROPERTY_KLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_PROPERTY, GladePropertyKlass))
11 #define GLADE_IS_PROPERTY(obj)         (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_PROPERTY))
12 #define GLADE_IS_PROPERTY_KLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_PROPERTY))
13 #define GLADE_PROPERTY_GET_KLASS(o)    (G_TYPE_INSTANCE_GET_CLASS ((o), GLADE_PROPERTY, GladePropertyKlass))
14 
15 typedef struct _GladePropertyKlass   GladePropertyKlass;
16 typedef struct _GladePropertyPrivate GladePropertyPrivate;
17 
18 typedef enum {
19   GLADE_STATE_NORMAL              = 0,
20   GLADE_STATE_CHANGED             = (1 << 0),
21   GLADE_STATE_UNSUPPORTED         = (1 << 1),
22   GLADE_STATE_SUPPORT_DISABLED    = (1 << 2)
23 } GladePropertyState;
24 
25 /* A GladeProperty is an instance of a GladePropertyClass.
26  * There will be one GladePropertyClass for "GtkLabel->label" but one
27  * GladeProperty for each GtkLabel in the GladeProject.
28  */
29 struct _GladeProperty
30 {
31   GObject             parent_instance;
32 
33   GladePropertyPrivate *priv;
34 };
35 
36 
37 struct _GladePropertyKlass
38 {
39   GObjectClass  parent_class;
40 
41   /* Class methods */
42   GladeProperty *         (* dup)                   (GladeProperty *, GladeWidget *);
43   gboolean                (* equals_value)          (GladeProperty *, const GValue *);
44   gboolean                (* set_value)             (GladeProperty *, const GValue *);
45   void                    (* get_value)             (GladeProperty *, GValue *);
46   void                    (* sync)                  (GladeProperty *);
47   void                    (* load)                  (GladeProperty *);
48 
49   /* Signals */
50   void             (* value_changed)         (GladeProperty *, GValue *, GValue *);
51   void             (* tooltip_changed)       (GladeProperty *, const gchar *,
52 					      const gchar   *, const gchar *);
53   void   (* glade_reserved1)   (void);
54   void   (* glade_reserved2)   (void);
55   void   (* glade_reserved3)   (void);
56   void   (* glade_reserved4)   (void);
57   void   (* glade_reserved5)   (void);
58   void   (* glade_reserved6)   (void);
59 };
60 
61 
62 GType                   glade_property_get_type              (void) G_GNUC_CONST;
63 
64 GladeProperty          *glade_property_new                   (GladePropertyClass *klass,
65 							      GladeWidget        *widget,
66 							      GValue             *value);
67 
68 GladeProperty          *glade_property_dup                   (GladeProperty      *template_prop,
69 							      GladeWidget        *widget);
70 
71 void                    glade_property_reset                 (GladeProperty      *property);
72 
73 void                    glade_property_original_reset        (GladeProperty      *property);
74 
75 gboolean                glade_property_default               (GladeProperty      *property);
76 
77 gboolean                glade_property_original_default      (GladeProperty      *property);
78 
79 gboolean                glade_property_equals_value          (GladeProperty      *property,
80 							      const GValue       *value);
81 
82 gboolean                glade_property_equals                (GladeProperty      *property,
83 							      ...);
84 
85 gboolean                glade_property_set_value             (GladeProperty      *property,
86 							      const GValue       *value);
87 
88 gboolean                glade_property_set_va_list           (GladeProperty      *property,
89 							      va_list             vl);
90 
91 gboolean                glade_property_set                   (GladeProperty      *property,
92 							      ...);
93 
94 void                    glade_property_get_value             (GladeProperty      *property,
95 							      GValue             *value);
96 
97 void                    glade_property_get_default           (GladeProperty      *property,
98 							      GValue             *value);
99 
100 void                    glade_property_get_va_list           (GladeProperty      *property,
101 							      va_list             vl);
102 
103 void                    glade_property_get                   (GladeProperty      *property,
104 							      ...);
105 
106 void                    glade_property_add_object            (GladeProperty      *property,
107 							      GObject            *object);
108 
109 void                    glade_property_remove_object         (GladeProperty      *property,
110 							      GObject            *object);
111 
112 void                    glade_property_sync                  (GladeProperty      *property);
113 
114 void                    glade_property_load                  (GladeProperty      *property);
115 
116 void                    glade_property_read                  (GladeProperty      *property,
117 							      GladeProject       *project,
118 							      GladeXmlNode       *node);
119 
120 void                    glade_property_write                 (GladeProperty      *property,
121 							      GladeXmlContext    *context,
122 							      GladeXmlNode       *node);
123 
124 GladePropertyClass     *glade_property_get_class             (GladeProperty      *property);
125 
126 void                    glade_property_set_sensitive         (GladeProperty      *property,
127 							      gboolean            sensitive,
128 							      const gchar        *reason);
129 G_CONST_RETURN gchar   *glade_propert_get_insensitive_tooltip(GladeProperty      *property);
130 
131 void                    glade_property_set_support_warning   (GladeProperty      *property,
132 							      gboolean            disable,
133 							      const gchar        *reason);
134 G_CONST_RETURN gchar   *glade_property_get_support_warning   (GladeProperty      *property);
135 
136 gboolean                glade_property_warn_usage            (GladeProperty      *property);
137 
138 gboolean                glade_property_get_sensitive         (GladeProperty      *property);
139 
140 
141 void                    glade_property_set_save_always       (GladeProperty      *property,
142 							      gboolean            setting);
143 
144 gboolean                glade_property_get_save_always       (GladeProperty      *property);
145 
146 
147 void                    glade_property_set_enabled           (GladeProperty      *property,
148 							      gboolean            enabled);
149 
150 gboolean                glade_property_get_enabled           (GladeProperty      *property);
151 
152 
153 gchar                  *glade_property_make_string           (GladeProperty      *property);
154 
155 GladeWidget            *glade_property_get_widget            (GladeProperty      *property);
156 void                    glade_property_set_widget            (GladeProperty      *property,
157 							      GladeWidget        *widget);
158 
159 GValue                 *glade_property_inline_value          (GladeProperty      *property);
160 
161 GladePropertyState      glade_property_get_state             (GladeProperty      *property);
162 
163 void                    glade_property_i18n_set_comment      (GladeProperty      *property,
164 							      const gchar        *str);
165 
166 G_CONST_RETURN gchar   *glade_property_i18n_get_comment      (GladeProperty      *property);
167 
168 void                    glade_property_i18n_set_context      (GladeProperty      *property,
169 							      const gchar        *str);
170 
171 G_CONST_RETURN gchar   *glade_property_i18n_get_context      (GladeProperty      *property);
172 
173 void                    glade_property_i18n_set_translatable (GladeProperty      *property,
174 							      gboolean            translatable);
175 
176 gboolean                glade_property_i18n_get_translatable (GladeProperty      *property);
177 
178 void                    glade_property_push_superuser        (void);
179 
180 void                    glade_property_pop_superuser         (void);
181 
182 gboolean                glade_property_superuser             (void);
183 
184 G_END_DECLS
185 
186 #endif /* __GLADE_PROPERTY_H__ */
187