#ifndef __WSelector__H
#define __WSelector__H

#include "WimpLib:std.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct WSelector WSelector;
typedef struct WListCore WListCore;

typedef void (*FWSelector_Start)(WSelector*);
typedef void (*FWSelector_Stop)(WSelector*);
typedef void (*FWSelector_Check)(WSelector*);
typedef void (*FWSelector_Draw)(WSelector*, const CWindRedraw* pdraw);

struct WSelector
{
	WListCore*       pList;
	FWSelector_Start pFStart; // Starts the process
	FWSelector_Stop  pFStop;  // Stops the process
	FWSelector_Check pFCheck; // Check for changes in the selection
	FWSelector_Draw  pFDraw;  // Draw selector visual
};

WSelector* throw_New_WGridSelect(WListCore* pList, const Mouse* pMouse);
WSelector* throw_New_WGridKeySelect(WListCore* pList, int index);
WSelector* throw_New_WListSelect(WListCore* pList, int index);
WSelector* throw_New_WListKeySelect(WListCore* pList, int index);

#ifdef __cplusplus
}
#endif

#endif
