#ifndef GTKUTIL_H
#define GTKUTIL_H
#ifdef USE_GTK
#include <gtk/gtk.h>
#include "frame.h"
#define XG_SB_MIN 1
#define XG_SB_MAX 10000000
#define XG_SB_RANGE (XG_SB_MAX-XG_SB_MIN)
#define XG_FRAME_DATA "emacs_frame"
#define XG_LAST_SB_DATA "emacs_last_sb_value"
#define XG_ITEM_DATA "emacs_menuitem"
enum button_type
{
BUTTON_TYPE_NONE,
BUTTON_TYPE_TOGGLE,
BUTTON_TYPE_RADIO
};
typedef struct xg_list_node_
{
struct xg_list_node_ *prev;
struct xg_list_node_ *next;
} xg_list_node;
typedef struct xg_menu_cb_data_
{
xg_list_node ptrs;
FRAME_PTR f;
Lisp_Object menu_bar_vector;
int menu_bar_items_used;
GCallback highlight_cb;
int ref_count;
} xg_menu_cb_data;
typedef struct xg_menu_item_cb_data_
{
xg_list_node ptrs;
gulong select_id;
Lisp_Object help;
gpointer call_data;
xg_menu_cb_data *cl_data;
} xg_menu_item_cb_data;
typedef struct _widget_value
{
Lisp_Object lname;
char *name;
char *value;
Lisp_Object lkey;
char *key;
Lisp_Object help;
gint enabled;
gint selected;
enum button_type button_type;
struct _widget_value *contents;
gpointer call_data;
struct _widget_value *next;
struct _widget_value *free_list;
} widget_value;
#ifdef HAVE_GTK_FILE_BOTH
extern int use_old_gtk_file_dialog;
#endif
extern widget_value *malloc_widget_value P_ ((void));
extern void free_widget_value P_ ((widget_value *));
extern int xg_uses_old_file_dialog P_ ((void));
extern char *xg_get_file_name P_ ((FRAME_PTR f,
char *prompt,
char *default_filename,
int mustmatch_p,
int only_dir_p));
extern GtkWidget *xg_create_widget P_ ((char *type,
char *name,
FRAME_PTR f,
widget_value *val,
GCallback select_cb,
GCallback deactivate_cb,
GCallback hightlight_cb));
extern void xg_modify_menubar_widgets P_ ((GtkWidget *menubar,
FRAME_PTR f,
widget_value *val,
int deep_p,
GCallback select_cb,
GCallback deactivate_cb,
GCallback hightlight_cb));
extern int xg_update_frame_menubar P_ ((FRAME_PTR f));
extern int xg_have_tear_offs P_ ((void));
extern int xg_get_scroll_id_for_window P_ ((Display *dpy, Window wid));
extern void xg_create_scroll_bar P_ ((FRAME_PTR f,
struct scroll_bar *bar,
GCallback scroll_callback,
char *scroll_bar_name));
extern void xg_show_scroll_bar P_ ((int scrollbar_id));
extern void xg_remove_scroll_bar P_ ((FRAME_PTR f, int scrollbar_id));
extern void xg_update_scrollbar_pos P_ ((FRAME_PTR f,
int scrollbar_id,
int top,
int left,
int width,
int height));
extern void xg_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *bar,
int portion,
int position,
int whole));
extern void update_frame_tool_bar P_ ((FRAME_PTR f));
extern void free_frame_tool_bar P_ ((FRAME_PTR f));
extern void xg_resize_widgets P_ ((FRAME_PTR f,
int pixelwidth,
int pixelheight));
extern void xg_frame_set_char_size P_ ((FRAME_PTR f, int cols, int rows));
extern GtkWidget * xg_win_to_widget P_ ((Display *dpy, Window wdesc));
extern int xg_display_open P_ ((char *display_name, Display **dpy));
extern void xg_display_close P_ ((Display *dpy));
extern GdkCursor * xg_create_default_cursor P_ ((Display *dpy));
extern int xg_create_frame_widgets P_ ((FRAME_PTR f));
extern void x_wm_set_size_hint P_ ((FRAME_PTR f,
long flags,
int user_position));
extern void xg_set_background_color P_ ((FRAME_PTR f, unsigned long bg));
extern void xg_set_frame_icon P_ ((FRAME_PTR f,
Pixmap icon_pixmap,
Pixmap icon_mask));
extern void xg_mark_data P_ ((void));
extern void xg_initialize P_ ((void));
extern int xg_ignore_gtk_scrollbar;
#endif
#endif