xtb.h
上传用户:rrhhcc
上传日期:2015-12-11
资源大小:54129k
文件大小:5k
- /*
- * xtb - a mini-toolbox for X11
- *
- * David Harrison
- * University of California, Berkeley
- * 1988
- */
- #ifndef _XTB_
- #define _XTB_
- #include "copyright.h"
- /* Handler function return codes */
- typedef enum xtb_hret_defn {
- XTB_NOTDEF, XTB_HANDLED, XTB_STOP
- } xtb_hret;
- /* If you have an ANSI compiler, some checking will be done */
- #ifdef __STDC__
- #define DECLARE(func, rtn, args) extern rtn func args
- typedef void *xtb_data;
- #else
- #define DECLARE(func, rtn, args) extern rtn func ()
- typedef char *xtb_data;
- #endif
- /* Basic return value */
- typedef struct xtb_frame_defn {
- Window win;
- int x_loc,
- y_loc;
- unsigned int width,
- height;
- } xtb_frame;
- DECLARE(xtb_init, void, (Display * disp, int scrn,
- unsigned long foreground,
- unsigned long background,
- XFontStruct * font));
- /* Initializes mini-toolbox */
- /*
- * Basic event handling
- */
- DECLARE(xtb_register, void, (Window win,
- xtb_hret(*func) (XEvent * evt, xtb_data info),
- xtb_data info));
- /* Registers call-back function */
- DECLARE(xtb_lookup, xtb_data, (Window win));
- /* Returns data associated with window */
- DECLARE(xtb_dispatch, xtb_hret, (XEvent * evt));
- /* Dispatches events for mini-toolbox */
- DECLARE(xtb_unregister, int, (Window win, xtb_data * info));
- /* Unregisters a call-back function */
- /*
- * Command button frame
- */
- DECLARE(xtb_bt_new, void, (Window win, char *text,
- xtb_hret(*func) (Window win, int state,
- xtb_data val),
- xtb_data val,
- xtb_frame * frame));
- /* Creates new button */
- DECLARE(xtb_bt_get, int, (Window win, xtb_data * stuff, int *na));
- /* Returns state of button */
- DECLARE(xtb_bt_set, int, (Window win, int val, xtb_data stuff, int na));
- /* Sets state of button */
- DECLARE(xtb_bt_del, void, (Window win, xtb_data * info));
- /* Deletes a button */
- /*
- * Button row frame - built on top of buttons
- */
- DECLARE(xtb_br_new, void, (Window win, int cnt, char *lbls[], int init,
- xtb_hret(*func) (Window win, int prev,
- int this, xtb_data val),
- xtb_data val,
- xtb_frame * frame));
- /* Creates a new button row frame */
- DECLARE(xtb_br_get, int, (Window win));
- /* Returns currently selected button */
- DECLARE(xtb_br_del, void, (Window win));
- /* Deletes a button row */
- /*
- * Text output (label) frames
- */
- DECLARE(xtb_to_new, void, (Window win, char *text,
- XFontStruct * ft, xtb_frame * frame));
- /* Create new text output frame */
- DECLARE(xtb_to_del, void, (Window win));
- /*
- * Text input (editable text) frames
- */
- #define MAXCHBUF 1024
- DECLARE(xtb_ti_new, void, (Window win, char *text, int maxchar,
- xtb_hret(*func) (Window win, int ch,
- char *textcopy, xtb_data * val),
- xtb_data val, xtb_frame * frame));
- /* Creates a new text input frame */
- DECLARE(xtb_ti_get, void, (Window win, char text[MAXCHBUF], xtb_data * val));
- /* Returns state of text input frame */
- DECLARE(xtb_ti_set, int, (Window win, char *text, xtb_data val));
- /* Sets the state of text input frame */
- DECLARE(xtb_ti_ins, int, (Window win, int ch));
- /* Inserts character onto end of text input frame */
- DECLARE(xtb_ti_dch, int, (Window win));
- /* Deletes character from end of text input frame */
- DECLARE(xtb_ti_del, void, (Window win, xtb_data * info));
- /* Deletes an text input frame */
- /*
- * Block frame
- */
- DECLARE(xtb_bk_new, void, (Window win, unsigned width, unsigned height,
- xtb_frame * frame));
- /* Makes a new block frame */
- DECLARE(xtb_bk_del, void, (Window win));
- /* Deletes a block frame */
- /*
- * Formatting support
- */
- #define MAX_BRANCH 50
- typedef enum xtb_fmt_types_defn {
- W_TYPE, A_TYPE
- } xtb_fmt_types;
- typedef enum xtb_fmt_dir_defn {
- HORIZONTAL, VERTICAL
- } xtb_fmt_dir;
- typedef enum xtb_just_defn {
- XTB_CENTER = 0, XTB_LEFT, XTB_RIGHT, XTB_TOP, XTB_BOTTOM
- } xtb_just;
- typedef struct xtb_fmt_widget_defn {
- xtb_fmt_types type; /* W_TYPE */
- xtb_frame *w;
- } xtb_fmt_widget;
- typedef struct xtb_fmt_align_defn {
- xtb_fmt_types type; /* A_TYPE */
- xtb_fmt_dir dir; /* HORIZONTAL or VERTICAL */
- int padding; /* Outside padding */
- int interspace; /* Internal padding */
- xtb_just just; /* Justification */
- int ni; /* Number of items */
- union xtb_fmt_defn *items[MAX_BRANCH]; /* Branches themselves */
- } xtb_fmt_align;
- typedef union xtb_fmt_defn {
- xtb_fmt_types type; /* W_TYPE or A_TYPE */
- xtb_fmt_widget wid;
- xtb_fmt_align align;
- } xtb_fmt;
- #define NE 0
- DECLARE(xtb_w, xtb_fmt *, (xtb_frame * w));
- /* Returns formatting structure for frame */
- DECLARE(xtb_hort, xtb_fmt *, (xtb_just just, int padding, int interspace,...));
- /* Varargs routine for horizontal formatting */
- DECLARE(xtb_vert, xtb_fmt *, (xtb_just just, int padding, int interspace,...));
- /* Varargs routine for vertical formatting */
- DECLARE(xtb_fmt_do, xtb_fmt *, (xtb_fmt * def, unsigned *w, unsigned *h));
- /* Carries out formatting */
- DECLARE(xtb_mv_frames, void, (int nf, xtb_frame frames[]));
- /* Actually moves widgets */
- DECLARE(xtb_fmt_free, void, (xtb_fmt * def));
- /* Frees resources claimed by xtb_w, xtb_hort, and xtb_vert */
- #endif /* _XTB_ */