File: bonobo-ui-sync.h

package info (click to toggle)
bonobo 1.0.22-2.2
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 13,412 kB
  • ctags: 5,445
  • sloc: ansic: 51,714; sh: 7,733; makefile: 1,425; yacc: 318; xml: 266; sed: 16
file content (161 lines) | stat: -rw-r--r-- 5,410 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
/*
 * bonobo-ui-sync.h: An abstract base for Bonobo XML / widget sync sync'ing.
 *
 * Author:
 *	Michael Meeks (michael@helixcode.com)
 *
 * Copyright 2000 Helix Code, Inc.
 */

#ifndef _BONOBO_UI_SYNC_H_
#define _BONOBO_UI_SYNC_H_

#include <stdio.h>
#include <libgnome/gnome-defs.h>
#include <gtk/gtkcontainer.h>
#include <bonobo/bonobo-ui-node.h>

typedef struct _BonoboUISync BonoboUISync;

#include <bonobo/bonobo-ui-engine.h>

BEGIN_GNOME_DECLS

#define BONOBO_TYPE_UI_SYNC            (bonobo_ui_sync_get_type ())
#define BONOBO_UI_SYNC(obj)            (GTK_CHECK_CAST ((obj), BONOBO_TYPE_UI_SYNC, BonoboUISync))
#define BONOBO_UI_SYNC_CLASS(klass)    (GTK_CHECK_CLASS_CAST ((klass), BONOBO_TYPE_UI_SYNC, BonoboUISyncClass))
#define BONOBO_IS_UI_SYNC(obj)         (GTK_CHECK_TYPE ((obj), BONOBO_TYPE_UI_SYNC))
#define BONOBO_IS_UI_SYNC_CLASS(klass) (GTK_CHECK_CLASS_TYPE ((obj), BONOBO_TYPE_UI_SYNC))

typedef void (*BonoboUISyncStateFn)         (BonoboUISync     *sync,
					     BonoboUINode     *node,
					     BonoboUINode     *cmd_node,
					     GtkWidget        *widget,
					     GtkWidget        *parent);
	
typedef GtkWidget *(*BonoboUISyncBuildFn)   (BonoboUISync     *sync,
					     BonoboUINode     *node,
					     BonoboUINode     *cmd_node,
					     int              *pos,
					     GtkWidget        *parent);

typedef struct _BonoboUISyncPrivate BonoboUISyncPrivate;

struct _BonoboUISync {
	GtkObject parent;

	BonoboUIEngine *engine;
	gboolean        is_recursive;
	gboolean        has_widgets;

	BonoboUISyncPrivate *priv;
};

typedef struct {
	GtkObjectClass parent_class;

	BonoboUISyncStateFn sync_state;
	BonoboUISyncStateFn sync_state_placeholder;
	BonoboUISyncBuildFn build;
	BonoboUISyncBuildFn build_placeholder;

	void          (*update_root)     (BonoboUISync     *sync,
					  BonoboUINode     *root);

	void          (*remove_root)     (BonoboUISync     *sync,
					  BonoboUINode     *root);

	GList        *(*get_widgets)     (BonoboUISync     *sync,
					  BonoboUINode     *node);

	void          (*state_update)    (BonoboUISync     *sync,
					  GtkWidget        *widget,
					  const char       *new_state);
	
	gboolean      (*ignore_widget)   (BonoboUISync     *sync,
					  GtkWidget        *widget);
	
	gboolean      (*can_handle)      (BonoboUISync     *sync,
					  BonoboUINode     *node);
	
        void          (*stamp_root)      (BonoboUISync     *sync);

	GtkWidget    *(*get_attached)    (BonoboUISync     *sync,
					  GtkWidget        *widget,
					  BonoboUINode     *node);
} BonoboUISyncClass;

GtkType    bonobo_ui_sync_get_type           (void);
BonoboUISync *bonobo_ui_sync_construct       (BonoboUISync     *sync,
					      BonoboUIEngine   *engine,
					      gboolean          is_recursive,
					      gboolean          has_widgets);

gboolean   bonobo_ui_sync_is_recursive       (BonoboUISync     *sync);
gboolean   bonobo_ui_sync_has_widgets        (BonoboUISync     *sync);

void       bonobo_ui_sync_remove_root        (BonoboUISync     *sync,
					      BonoboUINode     *root);
void       bonobo_ui_sync_update_root        (BonoboUISync     *sync,
					      BonoboUINode     *root);

void       bonobo_ui_sync_state              (BonoboUISync     *sync,
					      BonoboUINode     *node,
					      BonoboUINode     *cmd_node,
					      GtkWidget        *widget,
					      GtkWidget        *parent);
void       bonobo_ui_sync_state_placeholder  (BonoboUISync     *sync,
					      BonoboUINode     *node,
					      BonoboUINode     *cmd_node,
					      GtkWidget        *widget,
					      GtkWidget        *parent);

GtkWidget *bonobo_ui_sync_build              (BonoboUISync     *sync,
					      BonoboUINode     *node,
					      BonoboUINode     *cmd_node,
					      int              *pos,
					      GtkWidget        *parent);
GtkWidget *bonobo_ui_sync_build_placeholder  (BonoboUISync     *sync,
					      BonoboUINode     *node,
					      BonoboUINode     *cmd_node,
					      int              *pos,
					      GtkWidget        *parent);

gboolean   bonobo_ui_sync_ignore_widget      (BonoboUISync     *sync,
					      GtkWidget        *widget);

GList     *bonobo_ui_sync_get_widgets        (BonoboUISync     *sync,
					      BonoboUINode     *node);

void       bonobo_ui_sync_stamp_root         (BonoboUISync     *sync);

gboolean   bonobo_ui_sync_can_handle         (BonoboUISync     *sync,
					      BonoboUINode     *node);

GtkWidget *bonobo_ui_sync_get_attached       (BonoboUISync     *sync,
					      GtkWidget        *widget,
					      BonoboUINode     *node);

void       bonobo_ui_sync_state_update       (BonoboUISync     *sync,
					      GtkWidget        *widget,
					      const char       *new_state);

gboolean   bonobo_ui_sync_do_show_hide       (BonoboUISync     *sync,
					      BonoboUINode     *node,
					      BonoboUINode     *cmd_node,
					      GtkWidget        *widget);

/*
 *  These are to allow you to remove certain types of Sync
 * from a bonobo-window to allow full sub-classing of that.
 * Do not use to instantiate syncs manualy or to sub-class.
 */
GtkType bonobo_ui_sync_keys_get_type    (void);
GtkType bonobo_ui_sync_menu_get_type    (void);
GtkType bonobo_ui_sync_status_get_type  (void);
GtkType bonobo_ui_sync_toolbar_get_type (void);

END_GNOME_DECLS

#endif /* _BONOBO_UI_SYNC_H_ */