Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: orxonox.OLD/branches/proxy/src/lib/gui/gl/glgui_button.h @ 9408

Last change on this file since 9408 was 9406, checked in by bensch, 18 years ago

orxonox/trunk: merged the proxy back

merged with commandsvn merge -r9346:HEAD https://svn.orxonox.net/orxonox/branches/proxy .

no conflicts

File size: 1.5 KB
Line 
1/*!
2 * @file glgui_button.h
3 * The gl_BUTTON widget of th openglGUI
4 *
5 */
6
7#ifndef _GLGUI_BUTTON_H
8#define _GLGUI_BUTTON_H
9
10#include "glgui_widget.h"
11
12#include "text.h"
13
14namespace OrxGui
15{
16  typedef enum
17  {
18    Button_Active,
19    Button_Inactive,
20    Button_Pressed,
21    Button_Released,
22    Button_Activating,
23    Button_Deactivating,
24
25  } ButtonState;
26
27  //! This is part of the openglGUI class
28  /**
29   * The Button is an Abstract class, that can be pushed to Toggle its state.
30   */
31  class GLGuiButton : public GLGuiWidget
32  {
33
34    public:
35      GLGuiButton(const std::string& label);
36      virtual ~GLGuiButton();
37
38      const std::string& label() const { return this->_label.text(); };
39      void setLabel(const std::string& label);
40
41      virtual void draw() const;
42      virtual bool processEvent(const Event& event);
43
44      sigslot::signal0<> clicked;
45      sigslot::signal0<> released;
46
47
48    protected:
49      virtual void updateFrontColor();
50
51      virtual void clicking(const Vector2D& pos);
52      virtual void releasing(const Vector2D& pos, bool focused);
53      virtual void hiding();
54      virtual void showing();
55
56      /** @returns the Text. (the physical Text) */
57      Text& labelText() { return this->_label; }
58      /** @returns the constant Text. (the physical Text) */
59      const Text& labelText() const { return this->_label; }
60
61    private:
62      void init();
63
64
65    private:
66      Text                 _label;
67      ButtonState          state;
68  };
69}
70#endif /* _GLGUI__H */
Note: See TracBrowser for help on using the repository browser.