/* Copyright (c) 1999   Alexander Yukhimets. All rights reserved. */

#ifndef XM_AXY_LIST_H
#define XM_AXY_LIST_H

#include <Xm/Xm.h>

#ifdef __cplusplus
extern "C" {
#endif

externalref WidgetClass xmAxyListWidgetClass;

typedef struct _XmAxyListClassRec *XmAxyListWidgetClass;
typedef struct _XmAxyListRec *XmAxyListWidget;

/* New resources */
#ifndef XmNactiveLabels
#define XmNactiveLabels			"activeLabels"
#endif

#ifndef XmNboldLabels
#define XmNboldLabels			"boldLabels"
#endif

#ifndef XmNcellBackground
#define XmNcellBackground		"cellBackground"
#endif

#ifndef XmNcellForeground
#define XmNcellForeground		"cellForeground"
#endif

#ifndef XmNcellMarginHeight
#define XmNcellMarginHeight		"cellMarginHeight"
#endif

#ifndef XmNcellMarginWidth
#define XmNcellMarginWidth		"cellMarginWidth"
#endif

#ifndef XmNcolumnAlignments
#define XmNcolumnAlignments		"columnAlignments"
#endif

#ifndef XmNcolumnCount
#define XmNcolumnCount			"columnCount"
#endif

#ifndef XmNcolumnLabelAlignments
#define XmNcolumnLabelAlignments 	"columnLabelAlignments"
#endif
#ifndef XmNcolumnLabels
#define XmNcolumnLabels			"columnLabels"
#endif

#ifndef XmNcolumnWidths
#define XmNcolumnWidths			"columnWidths"
#endif

#ifndef XmNdoubleClickInterval
#define XmNdoubleClickInterval	 	"doubleClickInterval"
#endif

#ifndef XmNdrawCellCallback
#define XmNdrawCellCallback	 	"drawCellCallback"
#endif

#ifndef XmNfontList
#define XmNfontList			"fontList"
#endif

#ifndef XmNshowLabels
#define XmNshowLabels			"showLabels"
#endif

#ifndef XmNlabelActivateCallback
#define XmNlabelActivateCallback 	"labelActivateCallback"
#endif

#ifndef XmNlabelBackground
#define XmNlabelBackground		"labelBackground"
#endif

#ifndef XmNlabelBottomShadowColor
#define XmNlabelBottomShadowColor	"labelBottomShadowColor"
#endif

#ifndef XmNlabelBottomShadowPixmap
#define XmNlabelBottomShadowPixmap	"labelBottomShadowPixmap"
#endif

#ifndef XmNlabelFontList
#define XmNlabelFontList		"labelFontList"
#endif

#ifndef XmNlabelForeground
#define XmNlabelForeground		"labelForeground"
#endif

#ifndef XmNlabelMarginHeight
#define XmNlabelMarginHeight		"labelMarginHeight"
#endif

#ifndef XmNlabelMarginWidth
#define XmNlabelMarginWidth		"labelMarginWidth"
#endif

#ifndef XmNlabelShadowThickness
#define XmNlabelShadowThickness		"labelShadowThickness"
#endif

#ifndef XmNlabelTopShadowColor
#define XmNlabelTopShadowColor		"labelTopShadowColor"
#endif

#ifndef XmNlabelTopShadowPixmap
#define XmNlabelTopShadowPixmap		"labelTopPixmap"
#endif

#ifndef XmNlistMarginHeight
#define XmNlistMarginHeight		"listMarginHeight"
#endif

#ifndef XmNlistMarginWidth
#define XmNlistMarginWidth		"listMarginWidth"
#endif

#ifndef XmNrowCount
#define XmNrowCount			"rowCount"
#endif

#ifndef XmNrowSpacing
#define XmNrowSpacing			"rowSpacing"
#endif

#ifndef XmNselectedBackground
#define XmNselectedBackground		"selectBackground"
#endif

#ifndef XmNselectedForeground
#define XmNselectedForeground		"selectForeground"
#endif

#ifndef XmNstringDirection
#define XmNstringDirection		"stringDirection"
#endif

/* classes */
#ifndef XmCActiveLabels
#define XmCActiveLabels			"ActiveLabels"
#endif

#ifndef XmCBoldLabels
#define XmCBoldLabels			"BoldLabels"
#endif

#ifndef XmCCellBackground
#define XmCCellBackground		"CellBackground"
#endif

#ifndef XmCCellForeground
#define XmCCellForeground		"CellForeground"
#endif

#ifndef XmCCellMarginHeight
#define XmCCellMarginHeight		"CellMarginHeight"
#endif

#ifndef XmCCellMarginWidth
#define XmCCellMarginWidth		"CellMarginWidth"
#endif

#ifndef XmCColumnAlignments
#define XmCColumnAlignments		"ColumnAlignments"
#endif

#ifndef XmCColumnCount
#define XmCColumnCount			"ColumnCount"
#endif

#ifndef XmCColumnLabelAlignments
#define XmCColumnLabelAlignments	"ColumnLabelAlignments"
#endif

#ifndef XmCColumnLabels
#define XmCColumnLabels			"ColumnLabels"
#endif

#ifndef XmCColumnWidths
#define XmCColumnWidths			"ColumnWidths"
#endif

#ifndef XmCDoubleClickInterval
#define XmCDoubleClickInterval	 	"DoubleClickInterval"
#endif

#ifndef XmCFontList
#define XmCFontList			"FontList"
#endif

#ifndef XmCShowLabels
#define XmCShowLabels			"ShowLabels"
#endif

#ifndef XmCLabelBackground
#define XmCLabelBackground		"LabelBackground"
#endif

#ifndef XmCLabelBottomShadowColor
#define XmCLabelBottomShadowColor	"LabelBottomShadowColor"
#endif

#ifndef XmCLabelBottomShadowPixmap
#define XmCLabelBottomShadowPixmap	"LabelBottomShadowPixmap"
#endif

#ifndef XmCLabelForeground
#define XmCLabelForeground		"LabelForeground"
#endif

#ifndef XmCLabelMarginHeight
#define XmCLabelMarginHeight		"LabelMarginHeight"
#endif

#ifndef XmCLabelMarginWidth
#define XmCLabelMarginWidth		"LabelMarginWidth"
#endif

#ifndef XmCLabelTopShadowColor
#define XmCLabelTopShadowColor		"LabelTopShadowColor"
#endif

#ifndef XmCLabelTopShadowPixmap
#define XmCLabelTopShadowPixmap		"LabelTopShadowPixmap"
#endif

#ifndef XmCListMarginHeight
#define XmCListMarginHeight		"ListMarginHeight"
#endif

#ifndef XmCListMarginWidth
#define XmCListMarginWidth		"ListMarginWidth"
#endif

#ifndef XmCRowCount
#define XmCRowCount			"RowCount"
#endif

#ifndef XmCRowSpacing
#define XmCRowSpacing			"RowSpacing"
#endif

#ifndef XmCSelectedBackground
#define XmCSelectedBackground		"SelectedBackground"
#endif

#ifndef XmCSelectedForeground
#define XmCSelectedForeground		"SelectedForeground"
#endif

#ifndef XmCStringDirection
#define XmCStringDirection		"StringDirection"
#endif


/* representation types */
#ifndef XmRAlignmentArray
#define XmRAlignmentArray		"AlignmentArray"
#endif

#ifndef XmRWidthArray
#define XmRWidthArray			"WidthArray"
#endif


#ifndef XmUNSPECIFIED
#define XmUNSPECIFIED			(~0)
#endif

#ifndef XmUNSPECIFIED_PIXEL
#define XmUNSPECIFIED_PIXEL		(Pixel)(~0)
#endif

#ifndef XmUNSPECIFIED_PIXMAP
#define XmUNSPECIFIED_PIXMAP		(Pixmap)(~0)
#endif

typedef enum { XmAxyListDrawCellReason=1, 
               XmAxyListDefaultActionReason,
	       XmAxyListLabelActivateReason
} XmAxyReasonType;

typedef struct {

  XmAxyReasonType 	reason;
  XEvent*		event;
  int			row;
  int 			column;

} XmAxyListAnyCallbackStruct;

typedef struct {

  XmAxyReasonType 	reason;
  XEvent*		event;
  int			row;
  int 			column;

} XmAxyListDefaultActionCallbackStruct;

typedef struct {

  XmAxyReasonType 	reason;
  XEvent*		event;
  int			row;
  int 			column;
  int			type;

  Dimension		width;
  Dimension		height;
  
  String		string;
  Boolean		is_xm_string;

  Pixmap		pixmap;
  Pixmap		pixmask;
  unsigned int		pixwidth;
  unsigned int		pixheight;
  unsigned int		pixdepth;

  Pixel			foreground;
  Pixel			background;

} XmAxyListDrawCellCallbackStruct;

extern Widget XmAxyCreateList(Widget parent, char *name,
                              Arg *arglist, Cardinal n);
extern Widget XmAxyCreateScrolledList(Widget parent, char *name,
                                      Arg *arglist, Cardinal n);

#ifndef XmAxyIsList
#define XmAxyIsList(w) XtIsSubclass((w), xmAxyListWidgetClass)
#endif

extern void XmAxyListRefresh(Widget list);
extern void XmAxyListDeselectAllRows(Widget list);
extern void XmAxyListDeselectRow(Widget list,int row);
extern void XmAxyListSelectRow(Widget list,int row);
extern Boolean XmAxyListGetSelectedRows(Widget list,
    int** selected_rows_list,int* selected_rows_count);
extern Boolean XmAxyListRowSelected(Widget list,int row);

#ifdef __cplusplus
}
#endif

#endif /* XM_AXY_LIST_H */


syntax highlighted by Code2HTML, v. 0.9.1