|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef TNZ_BUTTON_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define TNZ_BUTTON_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tw/tw.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "tw/action.h"
|
|
Toshihiro Shimizu |
890ddd |
#include "traster.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TWIN_EXPORTS
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_EXPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_EXPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#else
|
|
Toshihiro Shimizu |
890ddd |
#define DVAPI DV_IMPORT_API
|
|
Toshihiro Shimizu |
890ddd |
#define DVVAR DV_IMPORT_VAR
|
|
Toshihiro Shimizu |
890ddd |
#endif
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TButtonSet;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TButton : public TWidget, public TCommandSource
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
protected:
|
|
Toshihiro Shimizu |
890ddd |
bool m_pressed, m_active;
|
|
Toshihiro Shimizu |
890ddd |
int m_border;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
vector<tbuttonset *=""> *m_buttonSets;</tbuttonset>
|
|
Toshihiro Shimizu |
890ddd |
friend class TButtonSet;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TButton(TWidget *parent, string name = "button");
|
|
Toshihiro Shimizu |
890ddd |
~TButton();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void repaint();
|
|
Toshihiro Shimizu |
890ddd |
void enter(const TPoint &p);
|
|
Toshihiro Shimizu |
890ddd |
void leave(const TPoint &p);
|
|
Toshihiro Shimizu |
890ddd |
void leftButtonDown(const TMouseEvent &);
|
|
Toshihiro Shimizu |
890ddd |
void leftButtonUp(const TMouseEvent &);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
virtual void setTitle(string title) { m_name = title; }
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TIconButton : public TButton
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TRaster32P m_rasterUp, m_rasterDown;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TIconButton(TWidget *parent, TRaster32P raster, string name = "button");
|
|
Toshihiro Shimizu |
890ddd |
TIconButton(TWidget *parent, TRaster32P rasterUp, TRaster32P rasterDown, string name = "button");
|
|
Toshihiro Shimizu |
890ddd |
void repaint();
|
|
Toshihiro Shimizu |
890ddd |
void leftButtonDown(const TMouseEvent &);
|
|
Toshihiro Shimizu |
890ddd |
void leftButtonUp(const TMouseEvent &);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TIconToggle : public TButton
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
TRaster32P m_up, m_down;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TIconToggle(TWidget *parent,
|
|
Toshihiro Shimizu |
890ddd |
TRaster32P up, TRaster32P down,
|
|
Toshihiro Shimizu |
890ddd |
string name = "button");
|
|
Toshihiro Shimizu |
890ddd |
void repaint();
|
|
Toshihiro Shimizu |
890ddd |
void setStatus(bool v);
|
|
Toshihiro Shimizu |
890ddd |
bool getStatus();
|
|
Toshihiro Shimizu |
890ddd |
void leftButtonDown(const TMouseEvent &e);
|
|
Toshihiro Shimizu |
890ddd |
void leftButtonUp(const TMouseEvent &e);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class TButtonSetAction
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TButtonSetAction(){};
|
|
Toshihiro Shimizu |
890ddd |
virtual ~TButtonSetAction(){};
|
|
Toshihiro Shimizu |
890ddd |
virtual void sendCommand(string value) = 0;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
template <class t=""></class>
|
|
Toshihiro Shimizu |
890ddd |
class TButtonSetActionT : public TButtonSetAction
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
typedef void (T::*CommandMethod)(string);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
T *m_target;
|
|
Toshihiro Shimizu |
890ddd |
CommandMethod m_method;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
TButtonSetActionT<t>(T *target, CommandMethod method) : m_target(target), m_method(method){};</t>
|
|
Toshihiro Shimizu |
890ddd |
void sendCommand(string value) { (m_target->*m_method)(value); };
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
class DVAPI TButtonSet
|
|
Toshihiro Shimizu |
890ddd |
{
|
|
Toshihiro Shimizu |
890ddd |
std::map<tbutton *,="" string=""> *m_buttons;</tbutton>
|
|
Toshihiro Shimizu |
890ddd |
string m_currentValue;
|
|
Toshihiro Shimizu |
890ddd |
TButtonSetAction *m_action;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
TButtonSet();
|
|
Toshihiro Shimizu |
890ddd |
~TButtonSet();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Toshihiro Shimizu |
890ddd |
// not implemented
|
|
Toshihiro Shimizu |
890ddd |
TButtonSet(const TButtonSet &);
|
|
Toshihiro Shimizu |
890ddd |
TButtonSet &operator=(const TButtonSet &);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Toshihiro Shimizu |
890ddd |
void addButton(TButton *button, string value);
|
|
Toshihiro Shimizu |
890ddd |
void removeButton(TButton *button);
|
|
Toshihiro Shimizu |
890ddd |
void setValue(string value);
|
|
Toshihiro Shimizu |
890ddd |
void setValue(TButton *value);
|
|
Toshihiro Shimizu |
890ddd |
// Note: setValue fires the buttons actions as well as the buttonset action
|
|
Toshihiro Shimizu |
890ddd |
string getValue() { return m_currentValue; };
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void setAction(TButtonSetAction *action);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
void enable(bool on);
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|