Lephisto/src/gui_multi_state_image_button.h

32 lines
808 B
C++

#pragma once
#include <vector>
#include <string>
#include "gui_button.h"
#include "gui_iselectable.h"
namespace Gui {
class MultiStateImageButton : public Button, public ISelectable {
public:
MultiStateImageButton(void);
virtual void Draw(void);
virtual ~MultiStateImageButton(void);
virtual void GetSizeRequested(float size[2]);
void AddState(int state, const char* filename);
int GetState(void) { return m_states[m_curState].state; }
void StateNext(void);
void StatePrev(void);
virtual void OnActivate(void);
sigc::signal<void, MultiStateImageButton*> onClick;
virtual void SetSelected(bool state);
private:
struct State {
int state;
Image* image;
};
std::vector<State> m_states;
int m_curState;
bool m_isSelected;
};
}