00001 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- 00002 #ifndef __buttonwidget_hh 00003 #define __buttonwidget_hh 00004 00005 #include "widgetbase.hh" 00006 #include "otk/widget.hh" 00007 00008 namespace ob { 00009 00010 class Client; 00011 00012 class ButtonWidget : public otk::Widget, public WidgetBase 00013 { 00014 private: 00015 void setTextures(); 00016 Client *_client; 00017 bool _pressed; 00018 unsigned int _button; 00019 bool _state; 00020 00021 public: 00022 ButtonWidget(otk::Widget *parent, WidgetBase::WidgetType type, 00023 Client *client); 00024 virtual ~ButtonWidget(); 00025 00026 virtual void setStyle(otk::RenderStyle *style); 00027 00028 virtual void adjust(); 00029 00030 virtual void update(); 00031 00032 virtual void renderForeground(); 00033 00034 virtual void focus(); 00035 virtual void unfocus(); 00036 00037 virtual void buttonPressHandler(const XButtonEvent &e); 00038 virtual void buttonReleaseHandler(const XButtonEvent &e); 00039 }; 00040 00041 } 00042 00043 #endif // __buttonwidget_hh