root/lwlib/lwlib.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


     1 /*
     2 Copyright (C) 1992, 1993 Lucid, Inc.
     3 Copyright (C) 1994, 1999-2023 Free Software Foundation, Inc.
     4 
     5 This file is part of the Lucid Widget Library.
     6 
     7 The Lucid Widget Library is free software; you can redistribute it and/or
     8 modify it under the terms of the GNU General Public License as published by
     9 the Free Software Foundation; either version 1, or (at your option)
    10 any later version.
    11 
    12 The Lucid Widget Library is distributed in the hope that it will be useful,
    13 but WITHOUT ANY WARRANTY; without even the implied warranty of
    14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    15 GNU General Public License for more details.
    16 
    17 You should have received a copy of the GNU General Public License
    18 along with GNU Emacs.  If not, see <https://www.gnu.org/licenses/>.  */
    19 
    20 
    21 #ifndef LWLIB_H
    22 #define LWLIB_H
    23 
    24 #include <X11/Intrinsic.h>
    25 
    26 /*
    27 ** Widget values depend on the Widget type:
    28 **
    29 ** widget:   (name value key enabled data contents/selected)
    30 **
    31 ** label:    ("name" "string" NULL NULL NULL NULL)
    32 ** button:   ("name" "string" "key" T/F data <default-button-p>)
    33 ** button w/menu:
    34 **           ("name" "string" "key" T/F data (label|button|button w/menu...))
    35 ** menubar:  ("name" NULL NULL T/F data (button w/menu))
    36 ** selectable thing:
    37 **           ("name" "string" "key" T/F data T/F)
    38 ** checkbox: selectable thing
    39 ** radio:    ("name" NULL NULL T/F data (selectable thing...))
    40 ** strings:  ("name" NULL NULL T/F data (selectable thing...))
    41 ** text:     ("name" "string" <ign> T/F data)
    42 ** main:     ("name")
    43 */
    44 
    45 #include "lwlib-widget.h"
    46 
    47 typedef unsigned int LWLIB_ID;
    48 
    49 /* Menu separator types.  */
    50 
    51 enum menu_separator
    52 {
    53   /* These values are Motif compatible.  */
    54   SEPARATOR_NO_LINE,
    55   SEPARATOR_SINGLE_LINE,
    56   SEPARATOR_DOUBLE_LINE,
    57   SEPARATOR_SINGLE_DASHED_LINE,
    58   SEPARATOR_DOUBLE_DASHED_LINE,
    59   SEPARATOR_SHADOW_ETCHED_IN,
    60   SEPARATOR_SHADOW_ETCHED_OUT,
    61   SEPARATOR_SHADOW_ETCHED_IN_DASH,
    62   SEPARATOR_SHADOW_ETCHED_OUT_DASH,
    63 
    64   /* The following are supported by Lucid menus.  */
    65   SEPARATOR_SHADOW_DOUBLE_ETCHED_IN,
    66   SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT,
    67   SEPARATOR_SHADOW_DOUBLE_ETCHED_IN_DASH,
    68   SEPARATOR_SHADOW_DOUBLE_ETCHED_OUT_DASH
    69 };
    70 
    71 
    72 typedef void (*lw_callback) (Widget w, LWLIB_ID id, void* data);
    73 
    74 void  lw_register_widget (const char* type, const char* name, LWLIB_ID id,
    75                           widget_value* val, lw_callback pre_activate_cb,
    76                           lw_callback selection_cb,
    77                           lw_callback post_activate_cb,
    78                           lw_callback highlight_cb);
    79 Widget lw_get_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p);
    80 Widget lw_make_widget (LWLIB_ID id, Widget parent, Boolean pop_up_p);
    81 Widget lw_create_widget (const char* type, const char* name, LWLIB_ID id,
    82                          widget_value* val, Widget parent, Boolean pop_up_p,
    83                          lw_callback pre_activate_cb,
    84                          lw_callback selection_cb,
    85                          lw_callback post_activate_cb,
    86                          lw_callback highlight_cb);
    87 LWLIB_ID lw_get_widget_id (Widget w);
    88 int lw_modify_all_widgets (LWLIB_ID id, widget_value* val, Boolean deep_p);
    89 void lw_destroy_widget (Widget w);
    90 void lw_destroy_all_widgets (LWLIB_ID id);
    91 void lw_destroy_everything (void);
    92 void lw_destroy_all_pop_ups (void);
    93 Widget lw_raise_all_pop_up_widgets (void);
    94 widget_value* lw_get_all_values (LWLIB_ID id);
    95 Boolean lw_get_some_values (LWLIB_ID id, widget_value* val);
    96 void lw_pop_up_all_widgets (LWLIB_ID id);
    97 void lw_pop_down_all_widgets (LWLIB_ID id);
    98 void lw_popup_menu (Widget, XEvent *);
    99 
   100 /* Toolkit independent way of focusing on a Widget at the Xt level. */
   101 void lw_set_keyboard_focus (Widget parent, Widget w);
   102 
   103 /* Silly Energize hack to invert the "sheet" button */
   104 void lw_show_busy (Widget w, Boolean busy);
   105 
   106 /* Silly hack to assist with Lucid/Athena geometry management. */
   107 void lw_refigure_widget (Widget w, Boolean doit);
   108 
   109 /* Toolkit independent way of determining if an event occurred on a
   110    menubar. */
   111 Boolean lw_window_is_in_menubar (Window win, Widget menubar_widget);
   112 
   113 /* Manage resizing: TRUE permits resizing widget w; FALSE disallows it. */
   114 void lw_allow_resizing (Widget w, Boolean flag);
   115 
   116 /* Set up the main window. */
   117 void lw_set_main_areas (Widget parent,
   118                         Widget menubar,
   119                         Widget work_area);
   120 
   121 /* Value is non-zero if LABEL is a menu separator.  If it is, *TYPE is
   122    set to an appropriate enumerator of type enum menu_separator.
   123    MOTIF_P non-zero means map separator types not supported by Motif
   124    to similar ones that are supported.  */
   125 
   126 int lw_separator_p (const char *label, enum menu_separator *type,
   127                     int motif_p);
   128 
   129 #endif /* LWLIB_H */

/* [<][>][^][v][top][bottom][index][help] */