00001 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*- 00002 #ifndef __button_hh 00003 #define __button_hh 00004 00005 #include "focuslabel.hh" 00006 00007 namespace otk { 00008 00009 class Button : public FocusLabel { 00010 00011 public: 00012 00013 Button(Widget *parent); 00014 ~Button(); 00015 00016 inline const RenderTexture *getPressedFocusTexture(void) const 00017 { return _pressed_focus_tx; } 00018 void setPressedFocusTexture(RenderTexture *texture) 00019 { _pressed_focus_tx = texture; } 00020 00021 inline const RenderTexture *getPressedUnfocusTexture(void) const 00022 { return _pressed_unfocus_tx; } 00023 void setPressedUnfocusTexture(RenderTexture *texture) 00024 { _pressed_unfocus_tx = texture; } 00025 00026 void setTexture(RenderTexture *texture); 00027 void setUnfocusTexture(RenderTexture *texture); 00028 00029 inline bool isPressed(void) const { return _pressed; } 00030 void press(unsigned int mouse_button); 00031 void release(unsigned int mouse_button); 00032 00033 void buttonPressHandler(const XButtonEvent &e); 00034 void buttonReleaseHandler(const XButtonEvent &e); 00035 00036 virtual void setStyle(RenderStyle *style); 00037 00038 private: 00039 00040 bool _pressed; 00041 unsigned int _mouse_button; 00042 00043 RenderTexture *_pressed_focus_tx; 00044 RenderTexture *_pressed_unfocus_tx; 00045 00046 RenderTexture *_unpr_focus_tx; 00047 RenderTexture *_unpr_unfocus_tx; 00048 }; 00049 00050 } 00051 00052 #endif