90 lines
1.9 KiB
C
90 lines
1.9 KiB
C
|
#ifndef _APPCMDS_H
|
||
|
#define _APPCMDS_H
|
||
|
|
||
|
#include <bfc/dispatch.h>
|
||
|
#include <bfc/depend.h>
|
||
|
#include <bfc/common.h>
|
||
|
#include <bfc/string/StringW.h>
|
||
|
#include <bfc/ptrlist.h>
|
||
|
|
||
|
class DragItem;
|
||
|
|
||
|
// this will be fully dispatched later on
|
||
|
class AppCmds : public Dispatchable
|
||
|
{
|
||
|
public:
|
||
|
|
||
|
int appcmds_getNumCmds();
|
||
|
|
||
|
const wchar_t *appcmds_enumCmd(int n, int *side, int *id);
|
||
|
|
||
|
enum {
|
||
|
SIDE_LEFT = 0, SIDE_RIGHT = 1
|
||
|
};
|
||
|
|
||
|
enum {
|
||
|
LEFT_CLICK = 0,
|
||
|
RIGHT_CLICK = 1,
|
||
|
};
|
||
|
|
||
|
void appcmds_onCommand(int id, const RECT *buttonRect, int which_button); //onscreen coords
|
||
|
|
||
|
enum {
|
||
|
APPCMDS_GETNUMCMDS = 100,
|
||
|
APPCMDS_ENUMCMD = 200,
|
||
|
APPCMDS_ONCOMMAND = 300,
|
||
|
};
|
||
|
};
|
||
|
|
||
|
inline int AppCmds::appcmds_getNumCmds()
|
||
|
{
|
||
|
return _call(APPCMDS_GETNUMCMDS, 0);
|
||
|
}
|
||
|
|
||
|
inline const wchar_t *AppCmds::appcmds_enumCmd(int n, int *side, int *id)
|
||
|
{
|
||
|
return _call(APPCMDS_ENUMCMD, (const wchar_t *)NULL, n, side, id);
|
||
|
}
|
||
|
|
||
|
inline void AppCmds::appcmds_onCommand(int id, const RECT *buttonRect, int which_button)
|
||
|
{
|
||
|
_voidcall(APPCMDS_ONCOMMAND, id, buttonRect, which_button);
|
||
|
}
|
||
|
|
||
|
class CmdRec
|
||
|
{
|
||
|
public:
|
||
|
CmdRec(const wchar_t *name, int _id, int _side, int _autodelete = 0) : cmdname(name), id(_id), side(_side), autodelete(_autodelete) {}
|
||
|
virtual ~CmdRec() {}
|
||
|
StringW cmdname;
|
||
|
int id, side;
|
||
|
int autodelete;
|
||
|
|
||
|
virtual void onCommand(const RECT *buttonRect, int which_button) {}}
|
||
|
;
|
||
|
|
||
|
class AppCmdsI : public AppCmds
|
||
|
{
|
||
|
public:
|
||
|
AppCmdsI() { }
|
||
|
virtual ~AppCmdsI();
|
||
|
|
||
|
protected:
|
||
|
void appcmds_addCmd(CmdRec *cmdrec);
|
||
|
void appcmds_addCmd(const wchar_t *name, int id, int side = SIDE_LEFT);
|
||
|
void appcmds_deleteAll(); //calls delete on each one
|
||
|
|
||
|
public:
|
||
|
virtual int appcmds_getNumCmds();
|
||
|
virtual const wchar_t *appcmds_enumCmd(int n, int *side, int *id);
|
||
|
|
||
|
// override this and catch your commands, otherwise it'll call the CmdRec
|
||
|
virtual void appcmds_onCommand(int id, const RECT *buttonRect, int which_button);
|
||
|
|
||
|
protected:
|
||
|
RECVS_DISPATCH;
|
||
|
PtrList<CmdRec> cmds;
|
||
|
};
|
||
|
|
||
|
#endif
|