Pioneer
GuiButton.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 _GUIBUTTON_H
5 #define _GUIBUTTON_H
6 
7 #include "GuiWidget.h"
8 #include <string>
9 
10 namespace Gui {
11  class Label;
12 
13  class Button : public Widget {
14  public:
15  Button();
16  virtual ~Button();
17  virtual bool OnMouseDown(MouseButtonEvent *e);
18  virtual bool OnMouseUp(MouseButtonEvent *e);
19  virtual void OnActivate();
20 
21  // onClick only happens when press and release are both on widget (release can be elsewhere)
22  sigc::signal<void> onPress;
23  sigc::signal<void> onRelease;
24  sigc::signal<void> onClick;
25  bool IsPressed() { return m_isPressed; }
26 
27  private:
28  void OnRawMouseUp(MouseButtonEvent *e);
29  void OnRawKeyUp(SDL_KeyboardEvent *e);
30 
31  bool m_isPressed;
32  sigc::connection _m_release;
33  sigc::connection _m_kbrelease;
34  };
35 
36  class SolidButton : public Button {
37  public:
39  Button() {}
40  virtual ~SolidButton() {}
41  virtual void GetSizeRequested(float size[2]);
42  virtual void Draw();
43  };
44 
45  class TransparentButton : public Button {
46  public:
48  Button() {}
49  virtual ~TransparentButton() {}
50  virtual void GetSizeRequested(float size[2]);
51  virtual void Draw();
52  };
53 
54  class LabelButton : public Button {
55  public:
56  LabelButton(Label *label);
57  virtual ~LabelButton();
58  virtual void GetSizeRequested(float size[2]);
59  virtual void Draw();
60  void SetPadding(float p) { m_padding = p; }
61 
62  protected:
64 
65  private:
66  void OnSetSize();
67  float m_padding;
68  };
69 } // namespace Gui
70 
71 #endif /* _GUIBUTTON_H */
Definition: GuiButton.h:13
sigc::signal< void > onRelease
Definition: GuiButton.h:23
virtual ~Button()
Definition: GuiButton.cpp:17
virtual void OnActivate()
Definition: GuiButton.cpp:45
virtual bool OnMouseDown(MouseButtonEvent *e)
Definition: GuiButton.cpp:23
sigc::signal< void > onClick
Definition: GuiButton.h:24
Button()
Definition: GuiButton.cpp:10
bool IsPressed()
Definition: GuiButton.h:25
virtual bool OnMouseUp(MouseButtonEvent *e)
Definition: GuiButton.cpp:34
sigc::signal< void > onPress
Definition: GuiButton.h:22
Definition: GuiButton.h:54
virtual void Draw()
Definition: GuiButton.cpp:118
virtual ~LabelButton()
Definition: GuiButton.cpp:109
virtual void GetSizeRequested(float size[2])
Definition: GuiButton.cpp:111
LabelButton(Label *label)
Definition: GuiButton.cpp:101
void SetPadding(float p)
Definition: GuiButton.h:60
Label * m_label
Definition: GuiButton.h:63
Definition: GuiLabel.h:17
Definition: GuiButton.h:36
virtual ~SolidButton()
Definition: GuiButton.h:40
virtual void GetSizeRequested(float size[2])
Definition: GuiButton.cpp:72
SolidButton()
Definition: GuiButton.h:38
virtual void Draw()
Definition: GuiButton.cpp:82
Definition: GuiButton.h:45
virtual void GetSizeRequested(float size[2])
Definition: GuiButton.cpp:77
virtual ~TransparentButton()
Definition: GuiButton.h:49
TransparentButton()
Definition: GuiButton.h:47
virtual void Draw()
Definition: GuiButton.cpp:93
Definition: GuiWidget.h:14
Definition: Gui.cpp:10
Definition: GuiEvents.h:8