(linenum→info "unix/slp.c:2238")

emacs/22.1/src/gtkutil.h

    1: /* Definitions and headers for GTK widgets.
    2:    Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
    3: 
    4: This file is part of GNU Emacs.
    5: 
    6: GNU Emacs 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: GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to
   18: the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
   19: Boston, MA 02110-1301, USA.  */
   20: 
   21: #ifndef GTKUTIL_H
   22: #define GTKUTIL_H
   23: 
   24: 
   25: #ifdef USE_GTK
   26: 
   27: #include <gtk/gtk.h>
   28: #include "frame.h"
   29: 
   30: /* Minimum and maximum values used for GTK scroll bars  */
   31: 
   32: #define XG_SB_MIN 1
   33: #define XG_SB_MAX 10000000
   34: #define XG_SB_RANGE (XG_SB_MAX-XG_SB_MIN)
   35: 
   36: /* Key for data that is valid for menus in a frame  */
   37: #define XG_FRAME_DATA "emacs_frame"
   38: 
   39: /* Key for data that is the last scrollbar value  */
   40: #define XG_LAST_SB_DATA "emacs_last_sb_value"
   41: 
   42: /* Key for data that menu items hold.  */
   43: #define XG_ITEM_DATA "emacs_menuitem"
   44: 
   45: 
   46: /* Button types in menus.  */
   47: enum button_type
   48: {
   49:   BUTTON_TYPE_NONE,
   50:   BUTTON_TYPE_TOGGLE,
   51:   BUTTON_TYPE_RADIO
   52: };
   53: 
   54: /* This is a list node in a generic list implementation.  */
   55: typedef struct xg_list_node_
   56: {
   57:   struct xg_list_node_ *prev;
   58:   struct xg_list_node_ *next;
   59: } xg_list_node;
   60: 
   61: /* This structure is the callback data that is shared for menu items.
   62:    We need to keep it separate from the frame structure due to
   63:    detachable menus.  The data in the frame structure is only valid while
   64:    the menu is popped up.  This structure is kept around as long as
   65:    the menu is.  */
   66: typedef struct xg_menu_cb_data_
   67: {
   68:   xg_list_node  ptrs;
   69: 
   70:   FRAME_PTR     f;
   71:   Lisp_Object   menu_bar_vector;
   72:   int           menu_bar_items_used;
   73:   GCallback     highlight_cb;
   74:   int           ref_count;
   75: } xg_menu_cb_data;
   76: 
   77: /* This structure holds callback information for each individual menu item.  */
   78: typedef struct xg_menu_item_cb_data_
   79: {
   80:   xg_list_node  ptrs;
   81: 
   82:   gulong        select_id;
   83:   Lisp_Object   help;
   84:   gpointer      call_data;
   85:   xg_menu_cb_data *cl_data;
   86: 
   87: } xg_menu_item_cb_data;
   88: 
   89: 
   90: /* Used to specify menus and dialogs.
   91:    This is an adaption from lwlib for Gtk so we can use more of the same
   92:    code as lwlib in xmenu.c.  */
   93: typedef struct _widget_value
   94: {
   95:   /* name of widget */
   96:   Lisp_Object   lname;
   97:   char          *name;
   98:   /* value (meaning depend on widget type) */
   99:   char          *value;
  100:   /* keyboard equivalent. no implications for XtTranslations */
  101:   Lisp_Object   lkey;
  102:   char          *key;
  103:   /* Help string or nil if none.
  104:      GC finds this string through the frame's menu_bar_vector
  105:      or through menu_items.  */
  106:   Lisp_Object   help;
  107:   /* true if enabled */
  108:   gint          enabled;
  109:   /* true if selected */
  110:   gint  selected;
  111:   /* The type of a button.  */
  112:   enum button_type button_type;
  113:   /* Contents of the sub-widgets, also selected slot for checkbox */
  114:   struct _widget_value  *contents;
  115:   /* data passed to callback */
  116:   gpointer      call_data;
  117:   /* next one in the list */
  118:   struct _widget_value  *next;
  119: 
  120:   /* we resource the widget_value structures; this points to the next
  121:      one on the free list if this one has been deallocated.
  122:    */
  123:   struct _widget_value *free_list;
  124: } widget_value;
  125: 
  126: #ifdef HAVE_GTK_FILE_BOTH
  127: extern int use_old_gtk_file_dialog;
  128: #endif
  129: 
  130: extern widget_value *malloc_widget_value P_ ((void));
  131: extern void free_widget_value P_ ((widget_value *));
  132: 
  133: extern int xg_uses_old_file_dialog P_ ((void));
  134: 
  135: extern char *xg_get_file_name P_ ((FRAME_PTR f,
  136:                                    char *prompt,
  137:                                    char *default_filename,
  138:                                    int mustmatch_p,
  139:                                    int only_dir_p));
  140: 
  141: extern GtkWidget *xg_create_widget P_ ((char *type,
  142:                                         char *name,
  143:                                         FRAME_PTR f,
  144:                                         widget_value *val,
  145:                                         GCallback select_cb,
  146:                                         GCallback deactivate_cb,
  147:                                         GCallback hightlight_cb));
  148: 
  149: extern void xg_modify_menubar_widgets P_ ((GtkWidget *menubar,
  150:                                            FRAME_PTR f,
  151:                                            widget_value *val,
  152:                                            int deep_p,
  153:                                            GCallback select_cb,
  154:                                            GCallback deactivate_cb,
  155:                                            GCallback hightlight_cb));
  156: 
  157: extern int xg_update_frame_menubar P_ ((FRAME_PTR f));
  158: 
  159: extern int xg_have_tear_offs P_ ((void));
  160: 
  161: extern int xg_get_scroll_id_for_window P_ ((Display *dpy, Window wid));
  162: 
  163: extern void xg_create_scroll_bar P_ ((FRAME_PTR f,
  164:                                       struct scroll_bar *bar,
  165:                                       GCallback scroll_callback,
  166:                                       char *scroll_bar_name));
  167: extern void xg_show_scroll_bar P_ ((int scrollbar_id));
  168: extern void xg_remove_scroll_bar P_ ((FRAME_PTR f, int scrollbar_id));
  169: 
  170: extern void xg_update_scrollbar_pos P_ ((FRAME_PTR f,
  171:                                          int scrollbar_id,
  172:                                          int top,
  173:                                          int left,
  174:                                          int width,
  175:                                          int height));
  176: 
  177: extern void xg_set_toolkit_scroll_bar_thumb P_ ((struct scroll_bar *bar,
  178:                                                  int portion,
  179:                                                  int position,
  180:                                                  int whole));
  181: 
  182: 
  183: extern void update_frame_tool_bar P_ ((FRAME_PTR f));
  184: extern void free_frame_tool_bar P_ ((FRAME_PTR f));
  185: 
  186: extern void xg_resize_widgets P_ ((FRAME_PTR f,
  187:                                    int pixelwidth,
  188:                                    int pixelheight));
  189: extern void xg_frame_set_char_size P_ ((FRAME_PTR f, int cols, int rows));
  190: extern GtkWidget * xg_win_to_widget P_ ((Display *dpy, Window wdesc));
  191: 
  192: extern int xg_display_open P_ ((char *display_name, Display **dpy));
  193: extern void xg_display_close P_ ((Display *dpy));
  194: extern GdkCursor * xg_create_default_cursor P_ ((Display *dpy));
  195: 
  196: extern int xg_create_frame_widgets P_ ((FRAME_PTR f));
  197: extern void x_wm_set_size_hint P_ ((FRAME_PTR f,
  198:                                     long flags,
  199:                                     int user_position));
  200: extern void xg_set_background_color P_ ((FRAME_PTR f, unsigned long bg));
  201: 
  202: extern void xg_set_frame_icon P_ ((FRAME_PTR f,
  203:                                    Pixmap icon_pixmap,
  204:                                    Pixmap icon_mask));
  205: 
  206: /* Mark all callback data that are Lisp_object:s during GC.  */
  207: extern void xg_mark_data P_ ((void));
  208: 
  209: /* Initialize GTK specific parts.  */
  210: extern void xg_initialize P_ ((void));
  211: 
  212: /* Setting scrollbar values invokes the callback.  Use this variable
  213:    to indicate that the callback should do nothing.  */
  214: extern int xg_ignore_gtk_scrollbar;
  215: 
  216: #endif /* USE_GTK */
  217: #endif /* GTKUTIL_H */
  218: 
  219: /* arch-tag: 0757f3dc-00c7-4cee-9e4c-282cf1d34c72
  220:    (do not change this comment) */
Syntax (Markdown)