NetBSD/dist/cdk/include/cdk.h

269 lines
6.5 KiB
C

#ifndef CDK_H
#define CDK_H
/*
* Copyright 1999, Mike Glover
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgment:
* This product includes software developed by Mike Glover
* and contributors.
* 4. Neither the name of Mike Glover, nor the names of contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY MIKE GLOVER AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL MIKE GLOVER OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#include <cdk/cdk_config.h>
#ifdef CDK_PERL_EXT
#undef instr
#endif
#ifdef HAVE_XCURSES
#include <xcurses.h>
#else
#ifdef HAVE_NCURSES_H
#include <ncurses.h>
#else
#include <curses.h>
#endif
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <unistd.h>
#include <dirent.h>
#include <time.h>
#include <errno.h>
#include <pwd.h>
#include <grp.h>
#if HAVE_LIMITS_H
#include <limits.h>
#endif
#if HAVE_GETOPT_HEADER
#if HAVE_GETOPT_H
#include <getopt.h>
#endif
#else
extern int optind;
extern char * optarg;
#endif
/*
* Values we normally get from limits.h (assume 32-bits)
*/
#ifndef INT_MIN
#define INT_MIN (-INT_MAX - 1)
#endif
#ifndef INT_MAX
#define INT_MAX 2147483647
#endif
#ifndef GCC_UNUSED
#define GCC_UNUSED /*nothing*/
#endif
#if HAVE_LIBDMALLOC
#include <dmalloc.h> /* Gray Watson's library */
#else
#undef HAVE_LIBDMALLOC
#define HAVE_LIBDMALLOC 0
#endif
#if HAVE_LIBDBMALLOC
#include <dbmalloc.h> /* Conor Cahill's library */
#else
#undef HAVE_LIBDBMALLOC
#define HAVE_LIBDBMALLOC 0
#endif
/*
* This enumerated typedef lists all the CDK widget types.
*/
typedef enum {vNULL,
vALPHALIST, vBUTTONBOX, vCALENDAR, vDIALOG,
vENTRY, vFSELECT, vGRAPH, vHISTOGRAM,
vITEMLIST, vLABEL, vMARQUEE, vMATRIX,
vMENTRY, vMENU, vRADIO, vSCALE, vSCROLL,
vSELECTION, vSLIDER, vSWINDOW, vTEMPLATE,
vTAB, vVIEWER
} EObjectType;
/*
* This enumerated typedef lists all the valid display types for
* the entry, mentry, and template widgets.
*/
typedef enum {vINVALID,
vCHAR, vHCHAR, vINT, vHINT, vMIXED, vHMIXED,
vUCHAR, vLCHAR, vUHCHAR, vLHCHAR, vUMIXED,
vLMIXED, vUHMIXED, vLHMIXED, vVIEWONLY
} EDisplayType;
/*
* This enumerated typedef lists all the display types for
* the histogram widget.
*/
typedef enum {vNONE, vPERCENT, vFRACTION, vREAL} EHistogramDisplayType;
/*
* This enumerated typedef defines the display types for the graph.
*/
typedef enum {vPLOT, vLINE} EGraphDisplayType;
/*
* This enumerated typedef defines where white space is to be
* stripped from in the function stripWhiteSpace.
*/
typedef enum {vFRONT, vBACK, vBOTH} EStripType;
/*
* This enumerated typedef defines the type of exits the widgets
* recognize.
*/
typedef enum {vEARLY_EXIT, vESCAPE_HIT, vNORMAL, vNEVER_ACTIVATED} EExitType;
/*
* This defines a boolean type.
*/
typedef int boolean;
/*
* Declare miscellaneous defines.
*/
#define LEFT 9000
#define RIGHT 9001
#define CENTER 9002
#define TOP 9003
#define BOTTOM 9004
#define HORIZONTAL 9005
#define VERTICAL 9006
#define FULL 9007
#define NONE 0
#define ROW 1
#define COL 2
#define MAX_BINDINGS 300
#define MAX_ITEMS 2000
#define MAX_LINES 5000
#define MAX_BUTTONS 200
#if 0
/*
* Not all variants of curses define getmaxx, etc. But use the provided ones
* if they exist, to work around differences in the underlying implementation.
*/
#ifndef getmaxx
#define getmaxx(a) ((a)->_maxx)
#endif
#ifndef getmaxy
#define getmaxy(a) ((a)->_maxy)
#endif
#ifndef getbegx
#define getbegx(a) ((a)->_begx)
#endif
#ifndef getbegy
#define getbegy(a) ((a)->_begy)
#endif
#endif
#define MAXIMUM(a,b) ((a) > (b) ? (a) : (b))
#define MINIMUM(a,b) ((a) < (b) ? (a) : (b))
#define HALF(a) ((a) >> 1)
#ifndef COLOR_PAIR
#define COLOR_PAIR(a) A_NORMAL
#endif
#define CONTROL(c) ((c) & 0x1f)
/*
* Derived macros
*/
#define getendx(a) (getbegx(a) + getmaxx(a))
#define getendy(a) (getbegy(a) + getmaxy(a))
/* Define the 'GLOBAL DEBUG FILEHANDLE' */
extern FILE *CDKDEBUG;
/*
* =========================================================
* Declare Debugging Routines.
* =========================================================
*/
#define START_DEBUG(a) (CDKDEBUG=startCDKDebug(a))
#define WRITE_DEBUGMESG(a,b) (writeCDKDebugMessage (CDKDEBUG,__FILE__,a,__LINE__,b))
#define END_DEBUG (stopCDKDebug(CDKDEBUG)
FILE *startCDKDebug(char *filename);
void writeCDKDebugMessage (FILE *fd, char *filename, char *function, int line, char *message);
void stopCDKDebug (FILE *fd);
/*
* These header files define miscellaneous values and prototypes.
*/
#include <cdk/cdkscreen.h>
#include <cdk/curdefs.h>
#include <cdk/binding.h>
#include <cdk/cdk_util.h>
#include <cdk/cdk_objs.h>
/*
* Include the CDK widget header files.
*/
#include <cdk/alphalist.h>
#include <cdk/buttonbox.h>
#include <cdk/calendar.h>
#include <cdk/dialog.h>
#include <cdk/entry.h>
#include <cdk/fselect.h>
#include <cdk/graph.h>
#include <cdk/histogram.h>
#include <cdk/itemlist.h>
#include <cdk/label.h>
#include <cdk/marquee.h>
#include <cdk/matrix.h>
#include <cdk/mentry.h>
#include <cdk/menu.h>
#include <cdk/radio.h>
#include <cdk/scale.h>
#include <cdk/scroll.h>
#include <cdk/selection.h>
#include <cdk/slider.h>
#include <cdk/swindow.h>
#include <cdk/template.h>
#include <cdk/viewer.h>
#include <cdk/draw.h>
#endif /* CDK_H */