Pioneer
GuiMultiStateImageButton.h
Go to the documentation of this file.
1 // Copyright © 2008-2021 Pioneer Developers. See AUTHORS.txt for details
2 // Licensed under the terms of the GPL v3. See licenses/GPL-3.txt
3 
4 #ifndef _GUIMULTISTATEIMAGEBUTTON_H
5 #define _GUIMULTISTATEIMAGEBUTTON_H
6 
7 #include "GuiButton.h"
8 #include "GuiISelectable.h"
9 #include <string>
10 #include <vector>
11 
12 namespace Gui {
13  class MultiStateImageButton : public Button, public ISelectable {
14  public:
16  virtual void Draw();
17  virtual ~MultiStateImageButton();
18  virtual void GetSizeRequested(float size[2]);
19  void AddState(int state, const char *icon);
20  void AddState(int state, const char *icon, std::string tooltip);
21  void AddState(int state, const char *inactiveIcon, const char *activeIcon, std::string tooltip);
22  int GetState() { return m_states[m_curState].state; }
23  void StateNext();
24  void StatePrev();
25  virtual void OnActivate();
26  sigc::signal<void, MultiStateImageButton *> onClick;
27  virtual void SetSelected(bool state);
28  void SetActiveState(int state);
29  void SetRenderDimensions(const float wide, const float high);
30 
31  protected:
32  virtual std::string GetOverrideTooltip();
33 
34  private:
35  struct State {
36  int state;
37  Image *inactiveImage;
38  Image *activeImage;
39  std::string tooltip;
40  };
41  std::vector<State> m_states;
42  int m_curState;
43  bool m_isSelected;
44  };
45 } // namespace Gui
46 
47 #endif /* _GUIMULTISTATEIMAGEBUTTON_H */
Definition: GuiButton.h:13
Definition: GuiISelectable.h:10
Definition: GuiImage.h:12
Definition: GuiMultiStateImageButton.h:13
sigc::signal< void, MultiStateImageButton * > onClick
Definition: GuiMultiStateImageButton.h:26
virtual void OnActivate()
Definition: GuiMultiStateImageButton.cpp:38
virtual ~MultiStateImageButton()
Definition: GuiMultiStateImageButton.cpp:16
virtual void GetSizeRequested(float size[2])
Definition: GuiMultiStateImageButton.cpp:65
void StateNext()
Definition: GuiMultiStateImageButton.cpp:24
int GetState()
Definition: GuiMultiStateImageButton.h:22
virtual void Draw()
Definition: GuiMultiStateImageButton.cpp:72
virtual std::string GetOverrideTooltip()
Definition: GuiMultiStateImageButton.cpp:109
void SetRenderDimensions(const float wide, const float high)
Definition: GuiMultiStateImageButton.cpp:114
virtual void SetSelected(bool state)
Definition: GuiMultiStateImageButton.cpp:60
void AddState(int state, const char *icon)
Definition: GuiMultiStateImageButton.cpp:86
void StatePrev()
Definition: GuiMultiStateImageButton.cpp:31
void SetActiveState(int state)
Definition: GuiMultiStateImageButton.cpp:50
MultiStateImageButton()
Definition: GuiMultiStateImageButton.cpp:8
Definition: Gui.cpp:10