ftp.nice.ch/pub/next/science/mathematics/workbench/ImprovConnector.s.tar.gz#/ImprovConnector/imxPublicAPI.h

This is imxPublicAPI.h in view mode; [Download] [Up]

/*
*	L o t u s   I m p r o v
*
*	Filename:				imxPublicAPI.h
*	Created:				Oct 16, 1990
*	Author:   				Curt Gridley
*	Description:			public Improv API interface
*
*	Copyright (c) Lotus Development Corporation 1990, 1991
*/

#if !defined(IMXPUBLICAPI_H)
#define	IMXPUBLICAPI_H

//
// Status codes returned by most API calls.
//

#define IMX_ERRORS_PER_SUBSYS 	(1024)
#define IMX_ERR_BASE 			(6 * IMX_ERRORS_PER_SUBSYS)

typedef enum imxerrorcode_enum {
	imxerr_OK = 0,
	imxerr_UNKNOWN =  			-(IMX_ERR_BASE + IMX_ERRORS_PER_SUBSYS - 1),
	imxerr_MSG_ERROR,
	imxerr_CMD_NYI,
	imxerr_INVALID_CMD,
	imxerr_DISABLED_CMD,
	imxerr_MODEL_NOT_FOUND,
	imxerr_SHEET_NOT_FOUND,
	imxerr_VIEW_NOT_FOUND,
	imxerr_CELL_NOT_FOUND,
	imxerr_ITEM_NOT_FOUND,
	imxerr_RANGE_NOT_FOUND,
	imxerr_CATEGORY_NOT_FOUND,
	imxerr_FORMULA_NOT_FOUND,
	imxerr_PRESENTATION_NOT_FOUND,
	imxerr_FILE_NOT_FOUND,
	imxerr_NO_SELECTION,
	imxerr_SELECTION_TYPE,
	imxerr_SELECTION_MODIFIER,
	imxerr_MULTIPLE_SELECTION,
	imxerr_CELL_TYPE,
	imxerr_BAD_ARG,
	imxerr_BAD_RANGE,
	imxerr_BAD_AXIS,
	imxerr_BAD_REDUCTION,
	imxerr_BAD_FORMAT_MODE,
	imxerr_BAD_ALIGNMENT,
	imxerr_BAD_LINESTYLE,
	imxerr_BAD_FONT,
	imxerr_BAD_FORMAT,
	imxerr_BAD_COLOR,
	imxerr_BAD_FILENAME,
	imxerr_BAD_FILLTYPE,
	imxerr_BAD_PASTEMETHOD,
	imxerr_BAD_WDWTYPE,
	imxerr_NO_SUMMARY,
	imxerr_ZONE_FULL,
	imxerr_OS_WORLD,
	imxerr_DATA_WORLD,
	imxerr_FORMULA_WORLD,
	imxerr_IMPORT_EXPORT_WORLD,
	imxerr_HELP_WORLD,
	imxerr_LAST_ERROR_CODE		// This should always be last entry
} imxErrorCode;

// Values accepted for the type argument of GetCellValue and SetCellValue
// calls.
typedef enum imxcelltype_enum {
	cval_NUMBER = 0,
	cval_TEXT,
	cval_EMPTY,
	cval_NA,
	cval_ERR,
	cval_LAST_ENTRY				// must be last enum element
} imxCellType;

// Values accepted for the zone argument of SetCategoryZone
typedef enum imxdpzone_enum {
	zone_row = 0,
	zone_column,
	zone_page,
	zone_LAST_ENTRY				// must be last enum element
} imxDPZone;

// Values accepted for the position argument of AddItem.
typedef enum imxposition_enum {
	ipos_BEFORE = 0,
	ipos_AFTER,
	ipos_LAST_ENTRY				// must be last enum element
} imxPosition;

// Values returned for the arg of GetFormulaStatus.
typedef enum imxfmstat_enum {
	fmstat_OKAY,			//	cells computed normally
	fmstat_SHAPE,			//	LHS doesn't match RHS
	fmstat_ERROR,			//	compilation problems
	fmstat_OVERLAP,			//	LHS overlaps with another formula
	fmstat_UNKNOWN,			//	hasn't been compiled yet
	fmstat_COMMENT,			//	white space and comments only
	fmstat_EMPTY,			//	no formula text
	fmstat_LAST_ENTRY		// must be last enum element
} imxFMState;

// Summary types accepted for the SummarizeGroup call.
typedef enum imxgrpsummary_enum {
	grpsum_TOTAL = 0,		// Total of summarized items
	grpsum_AVERAGE,			// Average
	grpsum_MIN,				// Minimum
	grpsum_MAX,				// Maximum
	grpsum_DEVIATION,		// Standard deviation
	grpsum_COUNT,			// Count
	grpsum_CUSTOM,			// Custom (no formula generated)
	grpsum_LAST_ENTRY		// must be last enum element
} imxGrpSummary;

// Selection types returned and accepted by Selection related calls.
typedef enum imxseltype_enum {
	imxsel_EMPTY = 0,
	imxsel_CELL,
	imxsel_ITEM,
	imxsel_LABELSONLY,
	imxsel_RANGE,
	imxsel_CATEGORY,
	imxsel_FORMULA,
	imxsel_VIEW,
	imxsel_PRESENTATION,
	imxsel_SHEET,
	imxsel_LAST_ENTRY		// must be last enum element
} imxSelType;

// Model states returned (used as bit masks)
typedef enum imxmodelstate_enum {
	modstat_NONE=0,
	modstat_DIRTY=1,
	modstat_BACKUP=2
} imxModelState;

// Formatting enums.
typedef enum imxcolor_enum {
	color_DEFAULT,
	color_NONE,
	color_BLACK,
	color_DKGRAY,
	color_LTGRAY,
	color_WHITE,
	color_LAST_ENTRY		// must be last enum element
} imxColor;

typedef enum imxalign_enum {
	align_DEFAULT,
	align_NONE,
	align_SMART,
	align_LEFT,
	align_CENTERED,
	align_RIGHT,
	align_LAST_ENTRY		// must be last enum element
} imxAlign;

typedef enum imxlinestyle_enum {
	linestyle_DEFAULT,
	linestyle_NONE,
	linestyle_NOLINE,
	linestyle_SOLID,
	linestyle_DOTTED,
	linestyle_DASHED,
	linestyle_DOUBLE,
	linestyle_LONGDOT,
	linestyle_LONGDASH,
	linestyle_LAST_ENTRY	// must be last enum element
} imxLineStyle;

typedef enum imxlinewidth_enum {
	linewidth_DEFAULT,
	linewidth_NONE,
	linewidth_THINNEST,
	linewidth_THIN,
	linewidth_MEDIUM,
	linewidth_THICK,
	linewidth_LAST_ENTRY	// must be last enum element
} imxLineWidth;

typedef enum imxfmtmode_enum {
	fmtmode_DEFAULT,
	fmtmode_NUMBER,
	fmtmode_CUSTOMNUMBER,
	fmtmode_DATE,
	fmtmode_LAST_ENTRY		// must be last enum element
} imxFormatMode;

typedef enum fmtflags_enum {
	fmtflag_NONE=0,
	fmtflag_CURRENCY=1,
	fmtflag_COMMAS=2,
	fmtflag_PARENTHESES=4,
	fmtflag_EXPONENT=8,
	fmtflag_PERCENT=16,
	fmtflag_GENERAL=32
} imxFormatFlags;		

typedef enum fontflags_enum {
	fontflag_DEFAULT=1,
	fontflag_NAME=2,
	fontflag_SIZE=4
} imxFontFlags;

typedef enum pastemethod_enum {
	pastemethod_REPLACE,
	pastemethod_ADD,
	pastemethod_SUBTRACT,
	pastemethod_EMPTY_ONLY,
	pastemethod_LAST_ENTRY	// must be last enum element
} imxPasteMethod;				  

typedef enum filltype_enum {
	filltype_LINEAR,
	filltype_GEOMETRIC,
	filltype_DAYS,
	filltype_WEEKS,
	filltype_MONTHS,
	filltype_YEARS,
	filltype_LAST_ENTRY		// must be last enum element
} imxFillType;				  

typedef enum wdwtype_enum {
	wdwtype_INFOPANEL,
	wdwtype_MBROWSER,
	wdwtype_DATAFILLPANEL,
	wdwtype_FONTPANEL,
	wdwtype_FORMATPANEL,
	wdwtype_VIEWINSPECTOR,
	wdwtype_LAST_ENTRY		// must be last enum element
} imxWindowType;

typedef enum imxcmdcode_enum {
	imxcmd_NONE = 0,
	imxcmd_NEWMODEL = 1,
	imxcmd_NEWSHEET = 2,
	imxcmd_NEWVIEW = 3,
	imxcmd_CUT = 4,
	imxcmd_COPY = 5,
	imxcmd_COPYASGRAPH = 6,
	imxcmd_PASTE = 7,
	imxcmd_DELETE = 8,
	imxcmd_ADD = 9,
	imxcmd_SELALL = 10,
	imxcmd_SELITEMS = 11,
	imxcmd_SELCELLS = 12,
	imxcmd_HIDEITEMS = 13,
	imxcmd_UNHIDEITEMS = 14,
	imxcmd_SHOWALL = 15,
	imxcmd_SWAPBORDER = 16,
	imxcmd_GROUPITEMS = 17,
	imxcmd_UNGROUPITEMS = 18,
	imxcmd_EXPANDGROUP = 19,
	imxcmd_COLLAPSEGROUP = 20,
	imxcmd_SHOWHELP = 21,
	imxcmd_CLOSEMODEL = 22,
	imxcmd_REVERTMODEL =23,
	imxcmd_CHECKFORMULA = 24,
	imxcmd_NEWGRAPH = 25,
	imxcmd_ADDGRAPH = 26,
	imxcmd_REPLACEGRAPH = 27,
	imxcmd_ADDSERIES = 28,
	imxcmd_MARK = 29,
	imxcmd_ADDPAGEBREAK = 30,
	imxcmd_CLEARPAGEBREAK = 31,
  	imxcmd_RECALC = 32,
	imxcmd_QUITAPP = 33,
	imxcmd_HIDEAPP = 34,
	imxcmd_UNHIDEAPP = 35,
	imxcmd_LASTCMD
} imxCmdCode;

// Used as bit masks
typedef enum imxsort_enum {
	imxsort_ALLUPNOCASE = 0,
	imxsort_DOWN1 = 1,
	imxsort_CASE1 = 2,
	imxsort_DOWN2 = 4,
	imxsort_CASE2 = 8,
	imxsort_DOWN3 = 16,
	imxsort_CASE3 = 32
} imxSortFlags;

// Used as bit masks
typedef enum imxgridopts_enum {
	imxgrid_CELLGRID = 1,
	imxgrid_ITEMGRID = 2,
	imxgrid_ROWLINES = 4,
	imxgrid_COLUMNLINES = 8,
	imxgrid_PAGELINES = 16,
	imxgrid_ROWDIVIDER = 32,
	imxgrid_COLUMNDIVIDER = 64
} imxGridOptions;

// Used as bit masks
typedef enum imxlayopts_enum {
	imxlay_ITEMMARKERS = 1,
	imxlay_GROUPMARKERS = 2,
	imxlay_PAGEBREAKS = 4,
	imxlay_SHOWROWS = 8,
	imxlay_SHOWCOLUMNS = 16,
	imxlay_SHOWPAGES = 32,
	imxlay_OUTLINE = 64
} imxLayoutOptions;

// Used as bit masks
typedef enum imxfmopts_enum {
	imxfm_AUTORECALC = 1,
	imxfm_AUTOCHECK = 2,
	imxfm_SHOWERRORS = 4
} imxFormulaOptions;

// Used as bit masks
typedef enum imxprefs_enum {
	imxpref_NONE = 0,
	imxpref_SHOWALLFILES = 1,
	imxpref_RETAINBACKUPS = 2,
	imxpref_AUTOFORMATCELLS = 4,
	imxpref_SHOWWARNINGS = 8,
	imxpref_GLOBALSTYLES = 16,
	imxpref_AUTOLAUNCHPB = 32
} imxPrefFlags;

typedef enum imxgrafs_enum {
	imxgraf_LINEGRAPH = 0,
	imxgraf_BARGRAPH = 1,
	imxgraf_SCATTERGRAPH = 2,
	imxgraf_PIEGRAPH = 3,
	imxgraf_AREAGRAPH = 4,
	imxgraf_STOCKGRAPH = 5,
	imxgraf_3DBARGRAPH = 7
} imxGraphType;

typedef enum imxorder_enum {
	imxorder_BYROWS,
	imxorder_BYCOLS,
	imxorder_SMART
} imxDataOrder;

//
// Indentifies a single cell via indices and category names
// for a particular category ordering derived from a view
//
#define	MAXDPZONES			3
#define	MAXCATSPERDPZONE	4
#define	MAXCATS				(MAXDPZONES*MAXCATSPERDPZONE)
typedef struct imxvcell_struct {
	char *	category[MAXDPZONES][MAXCATSPERDPZONE];
	short	index[MAXDPZONES][MAXCATSPERDPZONE];
} imxVCell;

//
// Methods to save and update (recalc and redisplay) a particular model.
//
imxErrorCode imxOpenModel(char *modelName);
imxErrorCode imxSaveModel(char *modelName, char *fileName);
imxErrorCode imxUpdateModel(char *modelName);
imxErrorCode imxGetModelInfo(char **fileName, imxModelState *modelStatus,
	char *modelName);
imxErrorCode imxGetVersion(char **revision);

//
// Miscellaneous functions to manage the S/L link.
//
imxErrorCode imxGetErrorText(char **etext, imxErrorCode ecode);
imxErrorCode imxActivateApp(int force);

//
// Methods to query and set the current selection for a particular
// view/sheet/model.  These commands are useful in combination with
// imxCmdExec().  imxGetSelRangeInfo() can be used to find out
// the indices within a category of the selection endpoint items, along
// with the category layout of a particular DP selection.
// This info is useful for doing iteration over items/cells.
// GetLabelList() returns a list of row/column/page labels for the
// current DP selection.  This info is necessary to create an iterator
// for a CELL selection that is capable of stepping over hidden items.
//
imxErrorCode imxGetSelection(char **primName, imxSelType *seltype,
	char **viewName, char **sheetName, char **modelName);
imxErrorCode imxSetSelection(char *primName, imxSelType seltype,
	char *viewName, char *sheetName, char *modelName);
imxErrorCode imxGetSelRangeInfo(imxVCell **corner1, imxVCell **corner2);

//
// Routines for manipulating Cell data
//
imxErrorCode imxGetCellValue(char *cellName, imxCellType *cellType,
	double *cellNVal, char **cellSVal,
	char *sheetName, char *modelName);
imxErrorCode imxGetFormattedCellValue(char *cellName, imxCellType *cellType,
	char **formattedValue, char* viewName, char *sheetName, char *modelName);
imxErrorCode imxSetCellValue(char *cellName, imxCellType cellType,
	double cellNVal, char *cellSVal,
	char *sheetName, char *modelName);
imxErrorCode imxSetFormattedCellValue(char *cellVal, char *cellName,
	char *sheetName, char *modelName);
imxErrorCode imxDataFill(imxFillType method, imxDPZone order,
	char *start, char *step, char *end);
imxErrorCode imxPasteSpecial(imxPasteMethod method, int values, int styles,
	int transpose);

//
// Worksheet structure related commands
//
imxErrorCode imxAddItems(char *itemNames, int count, imxPosition position);
imxErrorCode imxSummarizeGroup(imxGrpSummary redux);
imxErrorCode imxGetSummaryItem(char **sumItemName, char *groupName,
	char *sheetName, char *modelName);
imxErrorCode imxGetSelLabelList(char **labelNames, imxDPZone dimzone);
imxErrorCode imxSortItemsByName(imxSortFlags sortFlags);
imxErrorCode imxSortItemsByKeys(char *keyItem1, char *keyItem2, char *keyItem3,
	imxSortFlags sortFlags);
imxErrorCode imxSetCategoryPosition(imxDPZone dimzone, int dimpos);
imxErrorCode imxGetLevelSize(char *itemName, int *size);
imxErrorCode imxSetLevelSize(char *itemName, int size);
imxErrorCode imxGetItemSize(int *size);
imxErrorCode imxSetItemSize(int size);
imxErrorCode imxGetGridOptions(imxGridOptions *optionFlags,
	int *categoryPosition);
imxErrorCode imxSetGridOptions(imxGridOptions optionFlags,
	int categoryPosition);
imxErrorCode imxGetLayoutOptions(imxLayoutOptions *optionFlags);
imxErrorCode imxSetLayoutOptions(imxLayoutOptions optionFlags);

//
// Simple menu related commands
//
imxErrorCode imxCmdEnabled(imxCmdCode cmdcode);
imxErrorCode imxCmdExec(imxCmdCode cmdcode);
imxErrorCode imxOpenPanel(imxWindowType panel);

//
// Formula related commands
//
imxErrorCode imxResolveOverlap(int flag, int fmNum,
	char *sheetName, char *modelName);
imxErrorCode imxGetFormulaStatus(imxFMState *fmstatP, int fmNum,
	char *sheetName, char *modelName);
imxErrorCode imxGetFormulaText(char **fmText, int fmNum,
	char *sheetName, char *modelName);
imxErrorCode imxSetFormulaText(char *fmText, int fmNum,
	char *sheetName, char *modelName);
imxErrorCode imxGetFormulasForCell(char **fmNumList, char *cellName,
	char *sheetName, char *modelName);
imxErrorCode imxGetFormulaOptions(imxFormulaOptions *optionFlags,
	int *iterations);
imxErrorCode imxSetFormulaOptions(imxFormulaOptions optionFlags,
	int iterations);

//
// Model Browser related commands
//
imxErrorCode imxGetViewNote(char **noteText, imxSelType seltype,
	char *primName, char *sheetName, char *modelName);
imxErrorCode imxSetViewNote(char *noteText, imxSelType seltype,
	char *primName, char *sheetName, char *modelName);
imxErrorCode imxOpenViews(char *primNames,
	imxSelType seltype, char *sheetName, char *modelName);
imxErrorCode imxCopyViews(char *primNames,
	imxSelType seltype, char *sheetName, char *modelName);
imxErrorCode imxDeleteViews(char *primNames,
	imxSelType seltype, char *sheetName, char *modelName);
imxErrorCode imxRename(char *newName, imxSelType seltype,
	char *primName, char *sheetName, char *modelName);

//
// Query functions useful for various iterators.
// Most of these functions return lists of names
// as a single text string, with one name per line (i.e. the names are
// separated by a newline character).
//
imxErrorCode imxGetModelList(char **modelNames);
imxErrorCode imxGetSheetList(char **sheetNames, char *modelName);
imxErrorCode imxGetViewList(char **viewNames, char *sheetName,
	char *modelName);
imxErrorCode imxGetCategoryList(char **catNames, char *sheetName,
	char *modelName);
imxErrorCode imxGetPresentationList(char **pNames, char *modelName);
imxErrorCode imxGetItemInfo(char **parentName, char **child1, char **childN,
	char *itemName, char *sheetName, char *modelName);
imxErrorCode imxGetItemRangeInfo(char **parentName, char **itemList,
	char *itemRange, char *sheetName, char *modelName);

//
// Format and Font related commands
//
imxErrorCode imxSetCellFormat(imxFormatMode mode, imxFormatFlags formatFlag,
	int decPlaces, char *metastring);
imxErrorCode imxGetCellFormat(imxFormatMode *mode, imxFormatFlags *formatFlag,
	int *decimalPlaces, char **metastring);
imxErrorCode imxSetDefaultCellFormat(imxFormatMode mode,
	imxFormatFlags formatFlag, int decPlaces, char *metastring);
imxErrorCode imxGetDefaultCellFormat(imxFormatMode *mode,
	imxFormatFlags *formatFlag, int *decimalPlaces, char **metastring);

imxErrorCode imxSetAlignment(imxAlign alignment);
imxErrorCode imxGetAlignment(imxAlign *alignment);
imxErrorCode imxSetDefaultAlignment(imxAlign alignment);
imxErrorCode imxGetDefaultAlignment(imxAlign *alignment);

imxErrorCode imxSetLineStyle(imxLineStyle style, imxLineWidth width,
	imxColor color);
imxErrorCode imxGetLineStyle(imxLineStyle *style, imxLineWidth *width,
	imxColor *color);
imxErrorCode imxSetDefaultLineStyle(imxLineStyle style, imxLineWidth width,
	imxColor color);
imxErrorCode imxGetDefaultLineStyle(imxLineStyle *style, imxLineWidth *width,
	imxColor *color);

imxErrorCode imxSetColor(imxColor foreground, imxColor background);
imxErrorCode imxGetColor(imxColor *foreground, imxColor *background);
imxErrorCode imxSetDefaultColor(imxColor foreground, imxColor background);
imxErrorCode imxGetDefaultColor(imxColor *foreground, imxColor *background);

imxErrorCode imxSetFont(imxFontFlags fontFlags, const char *fontname,
	float fontsize);
imxErrorCode imxGetFont(imxFontFlags *fontFlags, const char **fontname,
	float *fontsize);
imxErrorCode imxSetDefaultFont(imxFontFlags fontFlags, const char* fontname,
	float fontsize);
imxErrorCode imxGetDefaultFont(imxFontFlags *fontFlags, const char **fontname,
	float *fontsize);

int iimxSplitNames(char *itemNames, char ***pNameVecP);
void iimxFreeNames(char **nameVecP);

#endif	// IMXPUBLICAPI_H

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.