00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00033 #ifndef PG_TOOLTIPHELP_H
00034 #define PG_TOOLTIPHELP_H
00035
00036 #include "pgtimerobject.h"
00037
00038 class PG_Widget;
00039 class PG_LineEdit;
00040
00041
00055 class DECLSPEC PG_ToolTipHelp: public SigC::Object {
00056 private:
00057
00058 class Ticker: public PG_TimerObject {
00059 volatile Uint32 ticker;
00060 Uint32 eventTimer(Uint32 interval) {
00061 ++ticker;
00062 return interval;
00063 };
00064 public:
00065 Ticker( int interval ) : ticker(0) {
00066 SetTimer( interval );
00067 };
00068 Uint32 getTicker() {
00069 return ticker;
00070 };
00071 };
00072
00073 static Ticker* ticker;
00074
00075 void startTimer();
00076
00077 protected:
00078 PG_Widget* parentWidget;
00079 PG_TimerObject::ID id;
00080 Uint32 lastTick;
00081
00082 enum { off, counting, shown } status;
00083
00084 std::string my_text;
00085 std::string labelStyle;
00086
00087 int my_delay;
00088
00089 static PG_LineEdit* toolTipLabel;
00090
00091 bool onParentEnter( PG_Pointer dummy );
00092 bool onParentLeave( PG_Pointer dummy );
00093 bool onParentDelete( const PG_MessageObject* object );
00094 bool onMouseMotion( const SDL_MouseMotionEvent *motion );
00095 bool onIdle();
00096
00097
00098 public:
00109 PG_ToolTipHelp( PG_Widget* parent, const std::string& text, int delay = 10, const std::string &style="ToolTipHelp" );
00110
00111
00115 void SetText( const std::string& text );
00116
00122 void ShowHelp( const PG_Point& pos );
00123
00127 void HideHelp( );
00128 };
00129
00130
00131
00132 #endif