1 #ifndef __GLADE_WIDGET_H__ 2 #define __GLADE_WIDGET_H__ 3 4 #include <gladeui/glade-widget-adaptor.h> 5 #include <gladeui/glade-widget-action.h> 6 #include <gladeui/glade-signal.h> 7 #include <gladeui/glade-property.h> 8 9 #include <glib.h> 10 #include <glib-object.h> 11 12 G_BEGIN_DECLS 13 14 #define GLADE_TYPE_WIDGET (glade_widget_get_type ()) 15 #define GLADE_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GLADE_TYPE_WIDGET, GladeWidget)) 16 #define GLADE_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GLADE_TYPE_WIDGET, GladeWidgetClass)) 17 #define GLADE_IS_WIDGET(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GLADE_TYPE_WIDGET)) 18 #define GLADE_IS_WIDGET_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GLADE_TYPE_WIDGET)) 19 #define GLADE_WIDGET_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GLADE_TYPE_WIDGET, GladeWidgetClass)) 20 21 typedef struct _GladeWidgetClass GladeWidgetClass; 22 typedef struct _GladeWidgetPrivate GladeWidgetPrivate; 23 24 struct _GladeWidget 25 { 26 GInitiallyUnowned parent_instance; 27 28 GladeWidgetPrivate *priv; 29 }; 30 31 struct _GladeWidgetClass 32 { 33 GInitiallyUnownedClass parent_class; 34 35 void (*add_child) (GladeWidget *, GladeWidget *, gboolean); 36 void (*remove_child) (GladeWidget *, GladeWidget *); 37 void (*replace_child) (GladeWidget *, GObject *, GObject *); 38 39 void (*add_signal_handler) (GladeWidget *, GladeSignal *); 40 void (*remove_signal_handler) (GladeWidget *, GladeSignal *); 41 void (*change_signal_handler) (GladeWidget *, GladeSignal *); 42 43 gint (*button_press_event) (GladeWidget *, GdkEvent *); 44 gint (*button_release_event) (GladeWidget *, GdkEvent *); 45 gint (*motion_notify_event) (GladeWidget *, GdkEvent *); 46 47 gboolean (*event) (GladeWidget *, GdkEvent *); 48 49 void (* glade_reserved1) (void); 50 void (* glade_reserved2) (void); 51 void (* glade_reserved3) (void); 52 void (* glade_reserved4) (void); 53 void (* glade_reserved5) (void); 54 void (* glade_reserved6) (void); 55 void (* glade_reserved7) (void); 56 void (* glade_reserved8) (void); 57 }; 58 59 /* Nameless widgets in fact have a name, except 60 * that they are prefixed with this prefix 61 */ 62 #define GLADE_UNNAMED_PREFIX "__glade_unnamed_" 63 64 #define IS_GLADE_WIDGET_EVENT(event) \ 65 ((event) == GDK_BUTTON_PRESS || \ 66 (event) == GDK_BUTTON_RELEASE || \ 67 (event) == GDK_MOTION_NOTIFY) 68 69 /******************************************************************************* 70 General api 71 *******************************************************************************/ 72 73 GType glade_widget_get_type (void); 74 75 GladeWidget *glade_widget_get_from_gobject (gpointer object); 76 77 gboolean glade_widget_add_verify (GladeWidget *parent, 78 GladeWidget *child, 79 gboolean user_feedback); 80 81 void glade_widget_add_child (GladeWidget *parent, 82 GladeWidget *child, 83 gboolean at_mouse); 84 85 void glade_widget_remove_child (GladeWidget *parent, 86 GladeWidget *child); 87 88 void glade_widget_replace (GladeWidget *parent, 89 GObject *old_object, 90 GObject *new_object); 91 92 void glade_widget_rebuild (GladeWidget *gwidget); 93 94 GladeWidget *glade_widget_dup (GladeWidget *template_widget, 95 gboolean exact); 96 97 GList *glade_widget_get_signal_list (GladeWidget *widget); 98 99 void glade_widget_copy_signals (GladeWidget *widget, 100 GladeWidget *template_widget); 101 void glade_widget_copy_properties (GladeWidget *widget, 102 GladeWidget *template_widget, 103 gboolean copy_parentless, 104 gboolean exact); 105 106 void glade_widget_set_packing_properties (GladeWidget *widget, 107 GladeWidget *container); 108 109 GList *glade_widget_get_properties (GladeWidget *widget); 110 GList *glade_widget_get_packing_properties (GladeWidget *widget); 111 112 GladeProperty *glade_widget_get_property (GladeWidget *widget, 113 const gchar *id_property); 114 115 GladeProperty *glade_widget_get_pack_property (GladeWidget *widget, 116 const gchar *id_property); 117 118 GList *glade_widget_dup_properties (GladeWidget *dest_widget, 119 GList *template_props, 120 gboolean as_load, 121 gboolean copy_parentless, 122 gboolean exact); 123 124 void glade_widget_remove_property (GladeWidget *widget, 125 const gchar *id_property); 126 127 void glade_widget_show (GladeWidget *widget); 128 129 void glade_widget_hide (GladeWidget *widget); 130 131 void glade_widget_add_signal_handler (GladeWidget *widget, 132 const GladeSignal *signal_handler); 133 134 void glade_widget_remove_signal_handler (GladeWidget *widget, 135 const GladeSignal *signal_handler); 136 137 void glade_widget_change_signal_handler (GladeWidget *widget, 138 const GladeSignal *old_signal_handler, 139 const GladeSignal *new_signal_handler); 140 141 GPtrArray * glade_widget_list_signal_handlers (GladeWidget *widget, 142 const gchar *signal_name); 143 144 gboolean glade_widget_has_decendant (GladeWidget *widget, 145 GType type); 146 147 gboolean glade_widget_event (GladeWidget *gwidget, 148 GdkEvent *event); 149 150 gboolean glade_widget_placeholder_relation (GladeWidget *parent, 151 GladeWidget *widget); 152 153 GladeWidgetAction *glade_widget_get_action (GladeWidget *widget, 154 const gchar *action_path); 155 156 GladeWidgetAction *glade_widget_get_pack_action (GladeWidget *widget, 157 const gchar *action_path); 158 159 GList *glade_widget_get_actions (GladeWidget *widget); 160 GList *glade_widget_get_pack_actions (GladeWidget *widget); 161 162 gboolean glade_widget_set_action_sensitive (GladeWidget *widget, 163 const gchar *action_path, 164 gboolean sensitive); 165 166 gboolean glade_widget_set_pack_action_sensitive (GladeWidget *widget, 167 const gchar *action_path, 168 gboolean sensitive); 169 170 gboolean glade_widget_set_action_visible (GladeWidget *widget, 171 const gchar *action_path, 172 gboolean sensitive); 173 174 gboolean glade_widget_set_pack_action_visible (GladeWidget *widget, 175 const gchar *action_path, 176 gboolean sensitive); 177 178 void glade_widget_write (GladeWidget *widget, 179 GladeXmlContext *context, 180 GladeXmlNode *node); 181 182 void glade_widget_write_child (GladeWidget *widget, 183 GladeWidget *child, 184 GladeXmlContext *context, 185 GladeXmlNode *node); 186 187 void glade_widget_write_signals (GladeWidget *widget, 188 GladeXmlContext *context, 189 GladeXmlNode *node); 190 191 void glade_widget_write_placeholder (GladeWidget *parent, 192 GObject *object, 193 GladeXmlContext *context, 194 GladeXmlNode *node); 195 196 GladeWidget *glade_widget_read (GladeProject *project, 197 GladeWidget *parent, 198 GladeXmlNode *node, 199 const gchar *internal); 200 201 void glade_widget_read_child (GladeWidget *widget, 202 GladeXmlNode *node); 203 204 205 void glade_widget_write_special_child_prop (GladeWidget *parent, 206 GObject *object, 207 GladeXmlContext *context, 208 GladeXmlNode *node); 209 210 void glade_widget_set_child_type_from_node (GladeWidget *parent, 211 GObject *child, 212 GladeXmlNode *node); 213 214 GladeEditorProperty *glade_widget_create_editor_property (GladeWidget *widget, 215 const gchar *property, 216 gboolean packing, 217 gboolean use_command); 218 219 gchar *glade_widget_generate_path_name (GladeWidget *widget); 220 221 gboolean glade_widget_is_ancestor (GladeWidget *widget, 222 GladeWidget *ancestor); 223 224 G_DEPRECATED 225 gboolean glade_widget_depends (GladeWidget *widget, 226 GladeWidget *other); 227 228 GdkDevice *glade_widget_get_device_from_event (GdkEvent *event); 229 230 void glade_widget_ensure_name (GladeWidget *widget, 231 GladeProject *project, 232 gboolean use_command); 233 234 /******************************************************************************* 235 Project, object property references 236 *******************************************************************************/ 237 238 void glade_widget_add_prop_ref (GladeWidget *widget, 239 GladeProperty *property); 240 241 void glade_widget_remove_prop_ref (GladeWidget *widget, 242 GladeProperty *property); 243 244 GList *glade_widget_list_prop_refs (GladeWidget *widget); 245 gboolean glade_widget_has_prop_refs (GladeWidget *widget); 246 247 GladeProperty *glade_widget_get_parentless_widget_ref (GladeWidget *widget); 248 249 250 GList *glade_widget_get_parentless_reffed_widgets (GladeWidget *widget); 251 252 /******************************************************************************* 253 Functions that deal with properties on the runtime object 254 *******************************************************************************/ 255 256 void glade_widget_object_set_property (GladeWidget *widget, 257 const gchar *property_name, 258 const GValue *value); 259 260 void glade_widget_object_get_property (GladeWidget *widget, 261 const gchar *property_name, 262 GValue *value); 263 264 void glade_widget_child_set_property (GladeWidget *widget, 265 GladeWidget *child, 266 const gchar *property_name, 267 const GValue *value); 268 269 void glade_widget_child_get_property (GladeWidget *widget, 270 GladeWidget *child, 271 const gchar *property_name, 272 GValue *value); 273 274 /******************************************************************************* 275 GladeProperty api convenience wrappers 276 *******************************************************************************/ 277 278 gboolean glade_widget_property_get (GladeWidget *widget, 279 const gchar *id_property, 280 ...); 281 282 gboolean glade_widget_property_set (GladeWidget *widget, 283 const gchar *id_property, 284 ...); 285 286 gboolean glade_widget_pack_property_get (GladeWidget *widget, 287 const gchar *id_property, 288 ...); 289 290 gboolean glade_widget_pack_property_set (GladeWidget *widget, 291 const gchar *id_property, 292 ...); 293 294 gboolean glade_widget_property_reset (GladeWidget *widget, 295 const gchar *id_property); 296 297 gboolean glade_widget_pack_property_reset (GladeWidget *widget, 298 const gchar *id_property); 299 300 gboolean glade_widget_property_default (GladeWidget *widget, 301 const gchar *id_property); 302 303 gboolean glade_widget_property_original_default (GladeWidget *widget, 304 const gchar *id_property); 305 306 gboolean glade_widget_pack_property_default (GladeWidget *widget, 307 const gchar *id_property); 308 309 gboolean glade_widget_property_set_sensitive (GladeWidget *widget, 310 const gchar *id_property, 311 gboolean sensitive, 312 const gchar *reason); 313 314 gboolean glade_widget_pack_property_set_sensitive (GladeWidget *widget, 315 const gchar *id_property, 316 gboolean sensitive, 317 const gchar *reason); 318 319 gboolean glade_widget_property_set_enabled (GladeWidget *widget, 320 const gchar *id_property, 321 gboolean enabled); 322 323 gboolean glade_widget_pack_property_set_enabled (GladeWidget *widget, 324 const gchar *id_property, 325 gboolean enabled); 326 327 328 gboolean glade_widget_property_set_save_always (GladeWidget *widget, 329 const gchar *id_property, 330 gboolean setting); 331 332 gboolean glade_widget_pack_property_set_save_always (GladeWidget *widget, 333 const gchar *id_property, 334 gboolean setting); 335 336 gchar *glade_widget_property_string (GladeWidget *widget, 337 const gchar *id_property, 338 const GValue *value); 339 340 341 gchar *glade_widget_pack_property_string (GladeWidget *widget, 342 const gchar *id_property, 343 const GValue *value); 344 345 /******************************************************************************* 346 Accessors 347 *******************************************************************************/ 348 349 void glade_widget_set_name (GladeWidget *widget, 350 const gchar *name); 351 352 G_CONST_RETURN gchar *glade_widget_get_name (GladeWidget *widget); 353 G_CONST_RETURN gchar *glade_widget_get_display_name (GladeWidget *widget); 354 gboolean glade_widget_has_name (GladeWidget *widget); 355 356 void glade_widget_set_is_composite (GladeWidget *widget, 357 gboolean composite); 358 359 gboolean glade_widget_get_is_composite (GladeWidget *widget); 360 361 void glade_widget_set_internal (GladeWidget *widget, 362 const gchar *internal); 363 364 G_CONST_RETURN gchar *glade_widget_get_internal (GladeWidget *widget); 365 366 GObject *glade_widget_get_object (GladeWidget *widget); 367 368 void glade_widget_set_project (GladeWidget *widget, 369 GladeProject *project); 370 371 GladeProject *glade_widget_get_project (GladeWidget *widget); 372 373 void glade_widget_set_in_project (GladeWidget *widget, 374 gboolean in_project); 375 gboolean glade_widget_in_project (GladeWidget *widget); 376 377 GladeWidgetAdaptor *glade_widget_get_adaptor (GladeWidget *widget); 378 379 GladeWidget *glade_widget_get_parent (GladeWidget *widget); 380 381 void glade_widget_set_parent (GladeWidget *widget, 382 GladeWidget *parent); 383 384 GList *glade_widget_get_children (GladeWidget* widget); 385 386 GladeWidget *glade_widget_get_toplevel (GladeWidget *widget); 387 388 gboolean glade_widget_superuser (void); 389 390 void glade_widget_push_superuser (void); 391 392 void glade_widget_pop_superuser (void); 393 394 void glade_widget_verify (GladeWidget *widget); 395 void glade_widget_set_support_warning (GladeWidget *widget, 396 const gchar *warning); 397 G_CONST_RETURN gchar *glade_widget_support_warning (GladeWidget *widget); 398 399 void glade_widget_lock (GladeWidget *widget, 400 GladeWidget *locked); 401 void glade_widget_unlock (GladeWidget *widget); 402 403 GladeWidget *glade_widget_get_locker (GladeWidget *widget); 404 405 GList *glade_widget_list_locked_widgets (GladeWidget *widget); 406 407 void glade_widget_support_changed (GladeWidget *widget); 408 409 GtkTreeModel *glade_widget_get_signal_model (GladeWidget *widget); 410 411 GladeWidget *glade_widget_find_child (GladeWidget *widget, 412 const gchar *name); 413 414 G_END_DECLS 415 416 #endif /* __GLADE_WIDGET_H__ */ 417