Simple GUI Library
button.cpp
Go to the documentation of this file.
1/**
2 * @author Nikita Mochalov (github.com/tralf-strues)
3 * @file button.cpp
4 * @date 2021-11-08
5 *
6 * @copyright Copyright (c) 2021
7 */
8
10
11namespace Sgl
12{
13 Button::Button()
14 {
15 m_DefaultSkin = new DefaultSkins::ButtonSkin(this);
16 setSkin(m_DefaultSkin);
17 }
18
19 Button::Button(const char* label) : Button()
20 {
21 setLabel(label);
22 }
23
24 Button::Button(const Image* icon) : Button()
25 {
26 setIcon(icon);
27 }
28
29 Button::Button(BaseSkin<Button>* skin, const char* label) : m_Label(label)
30 {
31 assert(skin);
32 skin->attach(this);
33 setSkin(skin);
34 }
35
36 Button::Button(BaseSkin<Button>* skin, const Image* icon) : m_Icon(icon)
37 {
38 assert(skin);
39 skin->attach(this);
40 setSkin(skin);
41 }
42
43 Button::Button(BaseSkin<Button>* skin)
44 {
45 assert(skin);
46 skin->attach(this);
47 setSkin(skin);
48 }
49
50 const char* Button::getLabel() const { return m_Label; }
51 void Button::setLabel(const char* label) { m_Label = label; }
52
53 const Image* Button::getIcon() const { return m_Icon; }
54 void Button::setIcon(const Image* icon) { m_Icon = icon; }
55
56 void Button::setOnAction(ActionListener<Button>* listener)
57 {
58 assert(listener);
59 m_ActionListener = listener;
60 m_ActionListener->setComponent(this);
61 m_Dispatcher.attachHandler(ActionListener<Button>::EVENT_TYPES, listener);
62 }
63
64 ActionListener<Button>* Button::getOnAction() { return m_ActionListener; }
65}