Fix missing includes
[centerim5.git] / cppconsui / Button.h
blob1d8aac99565fa969dc0a2b197e77fbe6e789a841
1 /*
2 * Copyright (C) 2007 by Mark Pustjens <pustjens@dds.nl>
3 * Copyright (C) 2010-2012 by CenterIM developers
5 * This file is part of CenterIM.
7 * CenterIM is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; either version 2 of the License, or
10 * (at your option) any later version.
12 * CenterIM is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
22 /**
23 * @file
24 * Button class.
26 * @ingroup cppconsui
29 #ifndef __BUTTON_H__
30 #define __BUTTON_H__
32 #include "Widget.h"
34 namespace CppConsUI
37 /**
38 * This class implements a simple button behaviour.
40 * The button does not keep states like pressed or not and it can call back
41 * one (or more) functions when pressed.
43 class Button
44 : public Widget
46 public:
47 enum Flag {
48 FLAG_VALUE = 1 << 0,
49 FLAG_UNIT = 1 << 1,
50 FLAG_RIGHT = 1 << 2
53 Button(int w, int h, const char *text_ = NULL, int flags_ = 0,
54 bool masked_ = false);
55 explicit Button(const char *text_ = NULL, int flags_ = 0,
56 bool masked_ = false);
57 Button(int w, int h, int flags_ = 0, const char *text_ = NULL,
58 const char *value_ = NULL, const char *unit_ = NULL,
59 const char *right_ = NULL, bool masked_ = false);
60 Button(int flags_, const char *text_ = NULL, const char *value_ = NULL,
61 const char *unit_ = NULL, const char *right_ = NULL,
62 bool masked_ = false);
63 virtual ~Button();
65 // Widget
66 virtual void Draw();
68 virtual void SetFlags(int new_flags);
69 virtual int GetFlags() const { return flags; }
71 /**
72 * Sets a new text and redraws itself.
74 virtual void SetText(const char *new_text);
75 /**
76 * Returns previously set text.
78 virtual const char *GetText() const { return text; }
80 virtual void SetValue(const char *new_value);
81 virtual void SetValue(int new_value);
82 virtual const char *GetValue() const { return value; }
84 virtual void SetUnit(const char *new_unit);
85 virtual const char *GetUnit() const { return unit; }
87 virtual void SetRight(const char *new_right);
88 virtual const char *GetRight() const { return right; }
90 virtual void SetMasked(bool masked_);
91 virtual bool GetMasked() const { return masked; }
93 /**
94 * Emited signal when the button is pressed/activated.
96 sigc::signal<void, Button&> signal_activate;
98 protected:
99 int flags;
100 char *text;
101 int text_width;
102 int text_height;
103 char *value;
104 int value_width;
105 char *unit;
106 int unit_width;
107 char *right;
108 int right_width;
109 bool masked;
111 private:
112 Button(const Button&);
113 Button& operator=(const Button&);
115 void ActionActivate();
117 void DeclareBindables();
120 } // namespace CppConsUI
122 #endif // __BUTTON_H__
124 /* vim: set tabstop=2 shiftwidth=2 textwidth=78 expandtab : */