source: trunk/third/rep-gtk/rep-gtk.h @ 15286

Revision 15286, 10.3 KB checked in by ghudson, 24 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r15285, which included commits to RCS files with non-trunk default branches.
Line 
1/* Copyright (C) 1997, 1998, 1999 Marius Vollmer
2 * Copyright (C) 1999 John Harper <john@dcs.warwick.ac.uk>
3 *
4 * $Id: rep-gtk.h,v 1.1.1.1 2000-11-12 06:16:26 ghudson Exp $
5 *
6 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2, or (at your option)
9 * any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this software; see the file COPYING.  If not, write to
18 * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
19 */
20
21#ifndef REP_GTK_H
22#define REP_GTK_H
23
24#ifdef HAVE_CONFIG_H
25#include <config.h>
26#endif
27
28#include <rep.h>
29#include <gtk/gtk.h>
30
31typedef struct _sgtk_type_info {
32  char *name;
33  GtkType type;
34  repv (*conversion) (repv);
35} sgtk_type_info;
36
37typedef struct _sgtk_enum_literal {
38  char *name;
39  int value;
40} sgtk_enum_literal;
41
42typedef struct _sgtk_enum_info {
43  sgtk_type_info header;
44  int n_literals;
45  sgtk_enum_literal *literals;
46} sgtk_enum_info;
47
48/* This is like an _sgtk_enum_literal, but the values are strings.
49   This is used in Gnome.  */
50typedef struct _sgtk_senum_literal {
51  char *name;
52  char *value;
53} sgtk_senum_literal;
54
55typedef struct _sgtk_senum_info {
56  sgtk_type_info header;
57  int n_literals;
58  sgtk_senum_literal *literals;
59} sgtk_senum_info;
60
61typedef struct _sgtk_boxed_info {
62  sgtk_type_info header;
63  void *(*copy) (void *);
64  void (*destroy) (void *);
65  size_t size;
66} sgtk_boxed_info;
67
68typedef struct _sgtk_object_info {
69  sgtk_type_info header;
70  GtkType (*init_func) ();
71
72  struct _sgtk_object_info *parent;
73  guint n_args;
74  GtkArg *args;
75  guint *args_flags;
76  char **args_short_names;
77} sgtk_object_info;
78
79void sgtk_register_type_infos (sgtk_type_info **infos);
80sgtk_type_info *sgtk_get_type_info (guint type_seqno);
81void sgtk_register_type_infos_gtk (GtkTypeInfo **infos);
82sgtk_type_info* sgtk_maybe_find_type_info (GtkType type);
83sgtk_type_info *sgtk_find_type_info (GtkType type);
84
85int sgtk_valid_int (repv obj);
86int sgtk_valid_uint (repv obj);
87int sgtk_valid_long (repv obj);
88int sgtk_valid_ulong (repv obj);
89int sgtk_valid_char (repv obj);
90repv sgtk_uint_to_rep (u_long x);
91repv sgtk_int_to_rep (long x);
92repv sgtk_long_to_rep (long x);
93repv sgtk_ulong_to_rep (u_long x);
94guint sgtk_rep_to_uint (repv obj);
95gint sgtk_rep_to_int (repv obj);
96gulong sgtk_rep_to_ulong (repv obj);
97glong sgtk_rep_to_long (repv obj);
98gchar sgtk_rep_to_char (repv obj);
99repv sgtk_char_to_rep (gchar c);
100char *sgtk_rep_to_string (repv obj);
101repv sgtk_string_to_rep (char *x);
102repv sgtk_static_string_to_rep (const char *x);
103int sgtk_valid_string (repv obj);
104repv sgtk_bool_to_rep (int x);
105int sgtk_rep_to_bool (repv obj);
106int sgtk_valid_function (repv obj);
107int sgtk_valid_fd (repv obj);
108int sgtk_rep_to_fd (repv obj);
109repv sgtk_fd_to_rep (int fd);
110
111repv sgtk_wrap_gtkobj (GtkObject *obj);
112int sgtk_is_a_gtkobj (guint type, repv obj);
113GtkObject *sgtk_get_gtkobj (repv obj);
114
115int sgtk_valid_enum (repv obj, sgtk_enum_info*);
116repv sgtk_enum_to_rep (gint val, sgtk_enum_info*);
117gint sgtk_rep_to_enum (repv obj, sgtk_enum_info*);
118
119int sgtk_valid_flags (repv obj, sgtk_enum_info*);
120repv sgtk_flags_to_rep (gint val, sgtk_enum_info*);
121gint sgtk_rep_to_flags (repv obj, sgtk_enum_info*);
122
123int sgtk_valid_senum (repv obj, sgtk_senum_info*);
124repv sgtk_senum_to_rep (char *val, sgtk_senum_info*);
125char *sgtk_rep_to_senum (repv obj, sgtk_senum_info*);
126
127repv sgtk_boxed_to_rep (gpointer ptr, sgtk_boxed_info*, int copyp);
128void *sgtk_rep_to_boxed (repv obj);
129int sgtk_valid_boxed (repv obj, sgtk_boxed_info*);
130
131int sgtk_valid_float (repv obj);
132gfloat sgtk_rep_to_float (repv obj);
133repv sgtk_float_to_rep (gfloat f);
134
135int sgtk_valid_double (repv obj);
136double sgtk_rep_to_double (repv obj);
137repv sgtk_double_to_rep (double f);
138
139int sgtk_valid_pointer (repv obj);
140void *sgtk_rep_to_pointer (repv obj);
141repv sgtk_pointer_to_rep (void *ptr);
142
143int sgtk_valid_point (repv obj);
144GdkPoint sgtk_rep_to_point (repv obj);
145repv sgtk_point_to_rep (GdkPoint p);
146
147int sgtk_valid_rect (repv obj);
148GdkRectangle sgtk_rep_to_rect (repv obj);
149repv sgtk_rect_to_rep (GdkRectangle p);
150
151GtkType sgtk_type_from_name (char *name);
152int sgtk_valid_type (repv obj);
153GtkType sgtk_rep_to_type (repv obj);
154repv sgtk_type_to_rep (GtkType t);
155
156int sgtk_valid_composite (repv obj, int (*predicate)(repv));
157int sgtk_valid_complen (repv obj, int (*predicate)(repv), int len);
158
159repv sgtk_slist_to_rep (GSList *list, repv (*torep)(void*));
160GSList *sgtk_rep_to_slist (repv obj, void (*fromrep)(repv, void*));
161void sgtk_slist_finish (GSList *list, repv obj, repv (*torep)(void*));
162
163repv sgtk_list_to_rep (GList *list, repv (*torep)(void*));
164GList *sgtk_rep_to_list (repv obj, void (*fromrep)(repv, void*));
165void sgtk_list_finish (GList *list, repv obj, repv (*torep)(void*));
166
167typedef struct {
168  int count;
169  void *vec;
170} sgtk_cvec;
171
172sgtk_cvec sgtk_rep_to_cvec (repv obj, void (*fromrep)(repv, void*), size_t sz);
173void sgtk_cvec_finish (sgtk_cvec *, repv obj, repv (*torep)(void*), size_t sz);
174repv sgtk_cvec_to_rep (sgtk_cvec *cvec, repv (*toscm)(void *), size_t sz);
175
176typedef struct sgtk_protshell sgtk_protshell;
177
178void sgtk_set_protect (repv protector, sgtk_protshell *prot);
179sgtk_protshell *sgtk_new_protect (repv obj);
180sgtk_protshell *sgtk_protect (repv protector, repv obj);
181void sgtk_unprotect (sgtk_protshell *);
182repv sgtk_get_protect (sgtk_protshell *prot);
183
184void sgtk_callback_marshal (GtkObject *,
185                            gpointer data,
186                            guint n_args,
187                            GtkArg *args);
188void sgtk_callback_destroy (gpointer data);
189repv sgtk_callback_trampoline (repv new_trampoline);
190void sgtk_callback_postfix (void);
191
192int sgtk_valid_arg (GtkArg *, repv val);
193repv sgtk_arg_to_rep (GtkArg *a, int free_mem);
194void sgtk_rep_to_arg (GtkArg *a, repv obj, repv protector);
195void sgtk_rep_to_ret (GtkArg *a, repv obj);
196
197sgtk_object_info *sgtk_find_object_info_from_type (GtkType type);
198sgtk_object_info *sgtk_find_object_info (char *name);
199GtkArg *sgtk_build_args (sgtk_object_info *info, int *n_argsp,
200                         repv rep_args, repv protector, char *subr);
201
202repv sgtk_color_conversion (repv color);
203repv sgtk_font_conversion (repv color);
204
205void sgtk_set_standalone (int flag);
206int sgtk_is_standalone (void);
207repv sgtk_standalone_p (void);
208
209void sgtk_init (void);
210void sgtk_init_with_args (int *argcp, char ***argvp);
211
212/* Additional useful Gdk routines. */
213
214/* The following two do their magic with type conversions that are
215   automatically generated by build-guile-gtk. */
216
217GdkColor *gdk_color_intern (GdkColor *);
218GdkFont *gdk_font_intern (GdkFont *);
219
220GdkEventType gdk_event_type (GdkEvent *event);
221GdkWindow *gdk_event_window (GdkEvent *event);
222gboolean gdk_event_send_event (GdkEvent *event);
223GdkRectangle *gdk_event_area (GdkEvent *event);
224GdkVisibilityState gdk_event_visibility_state (GdkEvent *event);
225guint32 gdk_event_time (GdkEvent *event);
226gdouble gdk_event_x (GdkEvent *event);
227gdouble gdk_event_y (GdkEvent *event);
228gdouble gdk_event_pressure (GdkEvent *event);
229gdouble gdk_event_xtilt (GdkEvent *event);
230gdouble gdk_event_ytilt (GdkEvent *event);
231gint gdk_event_button (GdkEvent *event);
232gboolean gdk_event_button_state (GdkEvent *event);
233gboolean gdk_event_is_hint (GdkEvent *event);
234GdkInputSource gdk_event_source (GdkEvent *event);
235guint32 gdk_event_deviceid (GdkEvent *event);
236gdouble gdk_event_x_root (GdkEvent *event);
237gdouble gdk_event_y_root (GdkEvent *event);
238gboolean gdk_event_key_state (GdkEvent *event);
239guint gdk_event_keyval (GdkEvent *event);
240gchar *gdk_event_string (GdkEvent *event);
241GdkWindow *gdk_event_subwindow (GdkEvent *event);
242GdkNotifyType gdk_event_notify_detail (GdkEvent *event);
243gboolean gdk_event_in (GdkEvent *event);
244gint16 gdk_event_configure_x (GdkEvent *event);
245gint16 gdk_event_configure_y (GdkEvent *event);
246gint16 gdk_event_configure_width (GdkEvent *event);
247gint16 gdk_event_configure_height (GdkEvent *event);
248
249guint32 gdk_get_leader_window_id (void);
250
251guint32 gdk_window_xid (GdkWindow *win);
252
253GdkGC *gtk_style_fg_gc (GtkStyle *style, GtkStateType state);
254GdkGC *gtk_style_bg_gc (GtkStyle *style, GtkStateType state);
255
256/* Gtk stuff that wouldn't be here in an ideal world. */
257
258#if GTK_MAJOR_VERSION == 1 && GTK_MINOR_VERSION == 0
259typedef int GtkWidgetFlags;
260#endif
261
262gchar *gtk_label_get_interp (GtkLabel *label);
263void gtk_menu_popup_interp (GtkMenu *menu,
264                            GtkWidget *parent_menu_shell,
265                            GtkWidget *parent_menu_item,
266                            gint button,
267                            guint32 activate_time,
268                            repv position);
269
270GtkWidget*
271gtk_radio_menu_item_new_with_label_from_widget (GtkRadioMenuItem *group,
272                                                gchar            *label);
273GtkWidget* gtk_radio_menu_item_new_from_widget (GtkRadioMenuItem *group);
274GtkWidget* gtk_pixmap_new_interp (char *file, GtkWidget *intended_parent);
275
276#ifndef HAVE_GDK_COLOR_COPY
277GdkColor*    gdk_color_copy     (GdkColor *);
278void         gdk_color_free     (GdkColor *);
279#endif
280
281GdkColor *gdk_color_parse_interp (char *spec);
282GdkColor *gtk_style_get_white_interp (GtkStyle *style);
283
284#ifndef HAVE_GTK_WIDGET_PEEK_COLORMAP
285GdkColormap *gtk_widget_peek_colormap (void);
286#endif
287
288void gtk_list_append_item (GtkList *list, GtkListItem *item);
289
290#ifndef HAVE_GTK_TYPE_GET_INFO
291gboolean gtk_type_get_info (GtkType type, GtkTypeInfo *info);
292#endif
293
294GtkType gtk_class_new (GtkType parent_type, gchar *name);
295guint
296gtk_signal_new_generic (const gchar     *name,
297                        GtkSignalRunType signal_flags,
298                        GtkType          type,
299                        GtkType          return_type,
300                        guint            nparams,
301                        GtkType         *params);
302void sgtk_signal_emit (GtkObject *obj, char *name, repv rep_args);
303
304#ifndef HAVE_GTK_SIGNAL_SET_CLASS_FUNCTION_FULL
305void gtk_signal_set_class_function_full (GtkType            type,
306                                         const gchar       *signal,
307                                         GtkSignalFunc      func,
308                                         GtkCallbackMarshal marshal,
309                                         gpointer           data,
310                                         GtkDestroyNotify   destroy_func);
311#endif
312
313void gtk_color_selection_set_color_interp (GtkColorSelection *sel, GdkColor *color);
314GdkColor *gtk_color_selection_get_color_interp (GtkColorSelection *sel);
315extern void gtk_widget_draw_interp (GtkWidget *widget);
316
317repv sgtk_gtk_widget_get_allocation (GtkWidget *w);
318
319extern rep_xsubr *sgtk_subrs[];
320extern sgtk_type_info *sgtk_type_infos[];
321
322#endif /* !REP_GTK_H */
Note: See TracBrowser for help on using the repository browser.