/* Copyright (C) 1997, 1998, 1999, 2003, 2004, 2006, 2007 Free Software * Foundation, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 3, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ #ifndef GUILE_GTK_H #define GUILE_GTK_H #include #include #include typedef guint32 sgtk_timestamp; typedef struct _sgtk_type_info { char *name; GtkType type; SCM (*conversion) (SCM); GtkType (*init_func) (); } sgtk_type_info; typedef struct _sgtk_enum_literal { SCM symbol; char *name; int value; } sgtk_enum_literal; typedef struct _sgtk_enum_info { sgtk_type_info header; int n_literals; sgtk_enum_literal *literals; } sgtk_enum_info; /* This is like an _sgtk_enum_literal, but the values are strings. This is used in Gnome. */ typedef struct _sgtk_senum_literal { char *name; char *value; } sgtk_senum_literal; typedef struct _sgtk_senum_info { sgtk_type_info header; int n_literals; sgtk_senum_literal *literals; } sgtk_senum_info; typedef struct _sgtk_boxed_info { sgtk_type_info header; void *(*copy) (void *); void (*destroy) (void *); void (*cleanup) (SCM); size_t size; } sgtk_boxed_info; typedef struct _sgtk_object_info { sgtk_type_info header; struct _sgtk_object_info *parent; guint n_args; GtkArg *args; guint *args_flags; char **args_short_names; } sgtk_object_info; /* gdk-glue.c */ extern sgtk_boxed_info sgtk_gdk_color_info; extern sgtk_object_info sgtk_gdk_colormap_info; extern sgtk_boxed_info sgtk_gdk_cursor_info; extern sgtk_boxed_info sgtk_gdk_font_info; extern sgtk_enum_info sgtk_gdk_gravity_info; extern sgtk_object_info sgtk_gdk_pixmap_info; extern sgtk_object_info sgtk_gdk_window_info; extern sgtk_object_info sgtk_gdk_visual_info; extern sgtk_enum_info sgtk_gdk_cap_style_info; extern sgtk_enum_info sgtk_gdk_fill_info; extern sgtk_enum_info sgtk_gdk_function_info; extern sgtk_enum_info sgtk_gdk_join_style_info; extern sgtk_enum_info sgtk_gdk_line_style_info; extern sgtk_enum_info sgtk_gdk_subwindow_mode_info; extern sgtk_enum_info sgtk_gdk_visual_type_info; SCM sgtk_gdk_font_load (SCM font); void sgtk_init_gtk_gdk_glue_types (void); /* gtk-glue.c */ extern sgtk_enum_info sgtk_gtk_arg_flags_info; void sgtk_init_gtk_gtk_glue_types (void); /* gtk-gl/gdk-gl-glue.c */ void sgtk_init_gtk_gdk_gl_glue_types (void); /* C string objects */ int sgtk_valid_cstr (SCM obj); SCM sgtk_to_cstr (SCM obj); char *sgtk_cstr2ptr (SCM obj, unsigned long pos, const char *func_name); /* C memory objects */ SCM sgtk_make_cblk (void *p, size_t len); void sgtk_register_type_infos (sgtk_type_info **infos); void sgtk_register_type_infos_gtk (GtkTypeInfo **infos); sgtk_type_info *sgtk_get_type_info (guint type_seqno); GtkType sgtk_type_from_name (char *name); SCM sgtk_wrap_gtkobj (GObject *obj); SCM sgtk_wrap_gtkobj_nocopy (GObject *obj); int sgtk_is_a_gtkobj (GType type, SCM obj); GObject *sgtk_get_gtkobj (SCM obj); GType sgtk_g_object_get_type (void); void sgtk_enum_flags_init (sgtk_enum_info*); int sgtk_enum_flags_bin_search (SCM key, sgtk_enum_info *info, int *rval); int sgtk_valid_enum (SCM obj, sgtk_enum_info*); SCM sgtk_enum2scm (gint val, sgtk_enum_info*); gint sgtk_scm2enum (SCM obj, sgtk_enum_info*, int pos, char *sname); int sgtk_valid_flags (SCM obj, sgtk_enum_info*); SCM sgtk_flags2scm (gint val, sgtk_enum_info*); gint sgtk_scm2flags (SCM obj, sgtk_enum_info*, int pos, char *sname); int sgtk_valid_senum (SCM obj, sgtk_senum_info*); SCM sgtk_senum2scm (char *val, sgtk_senum_info*); char *sgtk_scm2senum (SCM obj, sgtk_senum_info*); SCM sgtk_boxed2scm (gpointer ptr, sgtk_boxed_info*, int copyp); void *sgtk_scm2boxed (SCM obj); int sgtk_valid_boxed (SCM obj, sgtk_boxed_info*); void sgtk_boxed_invalidate (SCM obj); int sgtk_valid_point (SCM obj); GdkPoint sgtk_scm2point (SCM obj); SCM sgtk_point2scm (GdkPoint p); struct sgtk_rectangle { int null; GdkRectangle r; }; int sgtk_valid_rect (SCM obj); GdkRectangle sgtk_scm2rect (SCM obj); struct sgtk_rectangle sgtk_scm2rect_null_ok (SCM obj); SCM sgtk_rect2scm (GdkRectangle r); int sgtk_valid_segment (SCM obj); GdkSegment sgtk_scm2segment (SCM obj); SCM sgtk_segment2scm (GdkSegment seg); int sgtk_port2fileno (SCM port); SCM sgtk_fileno2port (int fd); GdkAtom sgtk_scm2atom (SCM symbol); SCM sgtk_atom2scm (GdkAtom atom); int sgtk_valid_type (SCM obj); GtkType sgtk_scm2type (SCM obj); SCM sgtk_type2scm (GtkType t); int sgtk_valid_composite (SCM obj, int (*predicate)(SCM)); int sgtk_valid_complen (SCM obj, int (*predicate)(SCM), int len); SCM sgtk_composite_inconversion (SCM obj, SCM (*conversion)(SCM)); SCM sgtk_composite_outconversion (SCM obj, SCM (*conversion)(SCM)); SCM sgtk_slist2scm (GSList *list, SCM (*toscm)(void*)); GSList *sgtk_scm2slist (SCM obj, void (*fromscm)(SCM, void*)); void sgtk_slist_finish (GSList *list, SCM obj, SCM (*toscm)(void*)); SCM sgtk_list2scm (GList *list, SCM (*toscm)(void*)); GList *sgtk_scm2list (SCM obj, void (*fromscm)(SCM, void*)); void sgtk_list_finish (GList *list, SCM obj, SCM (*toscm)(void*)); typedef struct { int count; void *vec; } sgtk_cvec; sgtk_cvec sgtk_scm2cvec (SCM obj, void (*fromscm)(SCM, void*), size_t sz); void sgtk_cvec_finish (sgtk_cvec *, SCM obj, SCM (*toscm)(void*), size_t sz); typedef struct { int count; guchar *raw; SCM keep; } sgtk_raw; sgtk_raw sgtk_scm2raw (SCM obj, int, char*); typedef struct sgtk_protshell sgtk_protshell; sgtk_protshell *sgtk_protect (SCM protector, SCM obj); void sgtk_unprotect (sgtk_protshell *); void sgtk_callback_marshal (GtkObject *, gpointer data, guint n_args, GtkArg *args); void sgtk_callback_destroy (gpointer data); SCM sgtk_callback_trampoline (SCM new_trampoline); void sgtk_about_dialog_activate_link_marshal (GtkAboutDialog *about, const gchar *link, gpointer data); void gtk_about_dialog_set_email_hook_interp (SCM func); void gtk_about_dialog_set_url_hook_interp (SCM func); void gtk_link_button_set_uri_hook_interp (SCM func); void sgtk_closure_marshal (GClosure *closure, GValue *return_value, guint n_param_values, const GValue *param_values, gpointer invocation_hint, gpointer marshal_data); void sgtk_closure_destroy (gpointer data, GClosure *closure); int sgtk_valid_arg (GtkArg *, SCM val); SCM sgtk_arg2scm (GtkArg *a, int free_mem); void sgtk_scm2ret (GtkArg *a, SCM obj); void sgtk_throw_gerror (const char *func_name, GError *gerr); sgtk_object_info *sgtk_find_object_info_from_type (GtkType type); sgtk_object_info *sgtk_find_object_info (char *name); SCM sgtk_color_conversion (SCM color); SCM sgtk_font_conversion (SCM color); void sgtk_set_standalone (int flag); int sgtk_is_standalone (); SCM sgtk_standalone_p (); void sgtk_register_glue (char *name, void (*func)(void)); #define SGTK_REGISTER_GLUE(func) sgtk_register_glue (#func, func) void sgtk_init_gdk_support (void); void sgtk_init_gtk_support (void); void sgtk_init_threads (void); void sgtk_init (); void sgtk_init_with_args (int *argcp, char ***argvp); void sgtk_shell (int argc, char **argv); /* Additional useful Gdk routines. */ SCM gdk_window_mark (GdkWindow *window); GdkWindow *gdk_window_new_interp (GdkWindow *parent, int width, int height, GdkEventMask event_mask, GdkWindowClass window_class, GdkWindowType window_type, SCM rest); void gdk_window_destroy_interp (GdkWindow *window); SCM gdk_window_get_children_interp (GdkWindow *window); guint32 gdk_window_get_id (GdkWindow *window); GdkEventType gdk_event_type (GdkEvent *event); GdkWindow *gdk_event_window (GdkEvent *event); gboolean gdk_event_send_event (GdkEvent *event); GdkRectangle gdk_event_area (GdkEvent *event); gint gdk_event_count (GdkEvent *event); GdkVisibilityState gdk_event_visibility_state (GdkEvent *event); guint32 gdk_event_time (GdkEvent *event); gdouble gdk_event_x (GdkEvent *event); gdouble gdk_event_y (GdkEvent *event); gint gdk_event_button (GdkEvent *event); guint gdk_event_state (GdkEvent *event); gboolean gdk_event_is_hint (GdkEvent *event); GdkInputSource gdk_event_source (GdkEvent *event); gdouble gdk_event_x_root (GdkEvent *event); gdouble gdk_event_y_root (GdkEvent *event); guint gdk_event_keyval (GdkEvent *event); SCM gdk_event_string (GdkEvent *event); GdkWindow *gdk_event_subwindow (GdkEvent *event); GdkCrossingMode gdk_event_crossing_mode (GdkEvent *event); GdkNotifyType gdk_event_notify_detail (GdkEvent *event); gboolean gdk_event_in (GdkEvent *event); int gdk_event_focus (GdkEvent *event); gint16 gdk_event_configure_x (GdkEvent *event); gint16 gdk_event_configure_y (GdkEvent *event); gint16 gdk_event_configure_width (GdkEvent *event); gint16 gdk_event_configure_height (GdkEvent *event); GdkAtom gdk_event_atom (GdkEvent *event); GdkAtom gdk_event_selection (GdkEvent *event); GdkAtom gdk_event_target (GdkEvent *event); GdkAtom gdk_event_property (GdkEvent *event); GdkEvent *gdk_event_new (GdkEventType type); guint32 gdk_event_requestor (GdkEvent *event); GdkDragContext* gdk_event_drag_context (GdkEvent *event); GdkAtom gdk_event_message_type (GdkEvent *event); SCM gdk_event_message (GdkEvent *event); void gdk_add_client_message_filter_interp (GdkAtom message_type, SCM filter_proc); SCM gdk_rectangle_intersect_interp (GdkRectangle *rect1, GdkRectangle *rect2); GdkRectangle gdk_rectangle_union_interp (GdkRectangle *rect1, GdkRectangle *rect2); GdkRectangle gdk_region_get_clipbox_interp (GdkRegion *region); GdkImage *gdk_image_new_bitmap_interp (GdkVisual *visual, guchar data[], int count, gint width, gint height); GdkBitmap *gdk_bitmap_create_from_data_interp (GdkWindow *window, guchar data[], int count, gint width, gint height); GdkPixmap *gdk_pixmap_create_from_data_interp (GdkWindow *window, guchar data[], int count, gint width, gint height, gint depth, GdkColor *fg, GdkColor *bg); GdkPixmap *gdk_pixmap_create_from_xpm_d_interp (GdkWindow *window, GdkBitmap **mask, GdkColor *transparent_color, char *data[],int count); GdkPixmap * gdk_pixmap_colormap_create_from_xpm_d_interp (GdkWindow *window, GdkColormap *colormap, GdkBitmap **mask, GdkColor *transp_color, char *data[],int count); char *gdk_wcstombs_interp (GdkWChar src[], int count); SCM gdk_mbstowcs_interp (const char *src); GdkGCValuesMask sgtk_gdk_gc_values_fill (char *func_name, int argnum, GdkGCValues *values, SCM rest); GdkGC *gdk_gc_new_with_values_interp (GdkWindow *window, SCM rest); SCM gdk_gc_get_values_interp (GdkGC *gc); guint32 gdk_get_leader_window_id (); int gtk_editable_insert_text_scm (GtkEditable *editable, gchar *text, int position); void gdk_draw_text_interp (GdkDrawable *drawable, GdkFont *font, GdkGC *gc, gint x, gint y, SCM text); void gdk_text_extents_interp (GdkFont *font, SCM text, gint *lbearing, gint *rbearing, gint *width, gint *ascent, gint *descent); gint gdk_text_width_interp (GdkFont *font, SCM text); gint gdk_text_measure_interp (GdkFont *font, SCM text); gint gdk_text_height_interp (GdkFont *font, SCM text); /* Gtk stuff that wouldn't be here in an ideal world. */ SCM gtk_widget_size_request_interp (GtkWidget *widget); GtkWidget *gtk_message_dialog_new_interp (GtkWindow *parent, GtkDialogFlags flags, GtkMessageType type, GtkButtonsType buttons, const char *message); SCM gtk_container_children_interp (GtkContainer *container); gchar *gtk_label_get_interp (GtkLabel *label); void gtk_menu_popup_interp (GtkMenu *menu, GtkWidget *parent_menu_shell, GtkWidget *parent_menu_item, gint button, guint32 activate_time); GdkColor *gdk_color_new (void); GdkColor *gdk_color_parse_interp (char *spec); GdkColor *gtk_style_get_white_interp (GtkStyle *style); void gtk_list_append_item (GtkList *list, GtkListItem *item); void gtk_list_prepend_item (GtkList *list, GtkListItem *item); gboolean gtk_type_get_info (GtkType type, GtkTypeInfo *info); GtkType gtk_class_new (GtkType parent_type, gchar *name); guint gtk_signal_new_generic (const gchar *name, GtkSignalRunType signal_flags, GtkType type, GtkType return_type, guint nparams, GtkType *params); SCM sgtk_signal_emit (GObject *obj, char *name, SCM scm_args); void gtk_signal_set_class_function_full (GtkType type, const gchar *signal, GtkSignalFunc func, GtkCallbackMarshal marshal, gpointer data, GtkDestroyNotify destroy_func); gulong gtk_signal_connect_interp (SCM object, const gchar *signal, SCM func, gboolean object_signal, gboolean after); void gtk_color_selection_set_color_interp (GtkColorSelection *sel, GdkColor *color); GdkColor *gtk_color_selection_get_color_interp (GtkColorSelection *sel); SCM gtk_selection_data_data (GtkSelectionData* data); void gdk_draw_rgb_image_interp (GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint w, gint h, GdkRgbDither dith, guchar rgb_buf[], int count, gint rowstride); void gdk_draw_rgb_image_dithalign_interp (GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint w, gint h, GdkRgbDither dith, guchar rgb_buf[], int count, gint rowstride, gint xdith, gint ydith); void gdk_draw_indexed_image_interp (GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint w, gint h, GdkRgbDither dith, guchar index_buf[], int i_count, gint rowstride, GdkRgbCmap *cmap); void gdk_draw_gray_image_interp (GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint w, gint h, GdkRgbDither dith, guchar gray_buf[], int count, gint rowstride); void gdk_draw_rgb_32_image_interp (GdkDrawable *drawable, GdkGC *gc, gint x, gint y, gint w, gint h, GdkRgbDither dith, guchar rgb_32_buf[], int count, gint rowstride); GdkRgbCmap *gdk_rgb_cmap_new_interp (guint32 colors[], int count); void gdk_rgb_gc_set_foreground_interp (GdkGC *gc, guint32 rgb); void gdk_rgb_gc_set_background_interp (GdkGC *gc, guint32 rgb); void gdk_rgb_set_install_interp (int install); void gdk_rgb_set_min_colors_interp (int min_colors); GdkColormap *gdk_rgb_get_cmap_interp (void); GdkVisual *gdk_rgb_get_visual_interp (void); gboolean gdk_rgb_ditherable_interp (void); void gdk_rgb_set_verbose_interp (gboolean verbose); gint gdk_colormap_alloc_colors_interp (GdkColormap *colormap, SCM colors, int writable, int best_match, SCM *s_success); void gdk_colormap_free_colors_interp (GdkColormap *colormap, SCM colors); GdkColor *gdk_color_white_interp (GdkColormap *colormap); GdkColor *gdk_color_black_interp (GdkColormap *colormap); SCM gdk_query_depths_interp (void); SCM gdk_query_visual_types_interp (void); SCM gdk_list_visuals_interp (void); GList* gdk_drag_context_targets (GdkDragContext*); GtkTargetEntry sgtk_scm2gtk_target_entry (SCM obj, int pos, char* subr); void sgtk_gtk_target_entry_free (GtkTargetEntry*); void* gtk_fake_copy (void *); void *gtk_no_copy (void *); void gtk_no_free (void *); GdkColor *gtk_style_white (GtkStyle *style); GdkColor *gtk_style_black (GtkStyle *style); GdkColor *gtk_style_fg (GtkStyle *style, GtkStateType state); GdkColor *gtk_style_bg (GtkStyle *style, GtkStateType state); GdkColor *gtk_style_light (GtkStyle *style, GtkStateType state); GdkColor *gtk_style_dark (GtkStyle *style, GtkStateType state); GdkColor *gtk_style_mid (GtkStyle *style, GtkStateType state); GdkColor *gtk_style_text (GtkStyle *style, GtkStateType state); GdkColor *gtk_style_base (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_fg_gc (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_bg_gc (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_light_gc (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_dark_gc (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_mid_gc (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_text_gc (GtkStyle *style, GtkStateType state); GdkGC *gtk_style_base_gc (GtkStyle *style, GtkStateType state); void gdk_window_set_geometry_hints_interp (GdkWindow *window, SCM rest); SCM gdk_window_get_position_interp (GdkWindow *window); SCM gdk_window_get_root_origin_interp (GdkWindow *window); SCM gdk_window_get_deskrelative_origin_interp (GdkWindow *window); SCM gdk_window_get_size_interp (GdkWindow *); SCM gdk_window_get_origin_interp (GdkWindow *); SCM gdk_selection_property_get_interp (GdkWindow *requestor, GdkAtom *prop_type, int *prop_format); void gdk_property_change_interp (GdkWindow *window, GdkAtom property, GdkAtom type, gint format, GdkPropMode mode, SCM data); SCM gdk_text_property_to_text_list_interp (GdkAtom encoding, gint format, SCM text); gint gdk_string_to_compound_text_interp (char *str, GdkAtom *encoding, gint *format, SCM *textp); SCM gdk_property_get_interp (GdkWindow *window, GdkAtom property, GdkAtom type, gulong offset, gulong length, int pdelete, GdkAtom *actual_property_type, gint *actual_format); SCM gtk_rc_get_default_files_interp (void); GtkTextIter *gtk_text_iter_new_interp (void); void sgtk_issue_deprecation_warning (const char*); #endif /* !GUILE_GTK_H */