Home || Architecture || Video Search || Visual Search || Scripts || Applications || Important Messages || OGL || Src

ValueScrollBar.h

Go to the documentation of this file.
00001 //345678901234567890123456789012345678901234567890123456789012345678901234567890
00002 // Author: Richard van Balen, for University of Amsterdam
00003 
00004 #ifndef OglGui_ValueScrollBar_h
00005 #define OglGui_ValueScrollBar_h
00006 
00007 #ifndef OglGui_ScrollBar_h
00008 #include "OglGui/ScrollBar.h"
00009 #endif
00010 
00011 #ifndef OglGui_ValueScrollBarListener_h
00012 #include "OglGui/ValueScrollBarListener.h"
00013 #endif
00014 
00015 namespace OglGui { 
00016 
00017 class ValueScrollBar : public Window, ScrollBarListener
00018 {
00019 public:
00020 
00021     ValueScrollBar(int x, int y, int w, int h,
00022                    int minVal, int maxVal, int val, int margin=2) :
00023         Window(x, y, w, h)
00024     {
00025         Init(w, h, minVal, maxVal, val, margin);
00026     }
00027     ValueScrollBar(Window* parent, int x, int y, int w, int h,
00028                    int minVal, int maxVal, int val, int margin=2) :
00029         Window(parent, x, y, w, h)
00030     {
00031         Init(w, h, minVal, maxVal, val, margin);
00032     }
00033     ValueScrollBar(Window* parent, int w, int h,
00034                    int minVal, int maxVal, int val, int margin=2) :
00035         Window(parent, w, h)
00036     {
00037         Init(w, h, minVal, maxVal, val, margin);
00038     }
00039 
00040     void SetValueScrollBarListener(ValueScrollBarListener* l, void* userData=0)
00041     {
00042         mListener = l;
00043         mListenerData = userData;
00044     }
00045 
00046     virtual void OnScroll(ScrollBar *src, int position, void* userData)
00047     {
00048         sprintf(mTxtBuf, "%d", mMinVal + position);
00049         mValueTxt->SetText(mTxtBuf);
00050         if (mListener)
00051             mListener->OnValueChanged(this, mMinVal+position, userData);
00052     }
00053 
00054     void SetMinMaxValue(int minVal, int maxVal)
00055     {
00056         mMinVal = minVal;
00057         mMaxVal = maxVal;
00058         mScrollBar->SetRange(maxVal-minVal + 2, 2);
00059     }
00060 
00061     void GetMinMaxValue(int& minVal, int& maxVal)
00062     {
00063         minVal = mMinVal;
00064         maxVal = mMaxVal;
00065     }
00066 
00067     void SetValue(int val)       { mScrollBar->SetValue(val - mMinVal); }
00068     int  GetValue()              { return mScrollBar->GetValue() + mMinVal; }
00069     
00070     ScrollBar*    SBar()    { return mScrollBar; }
00071     StaticText*   ValText() { return mValueTxt;  }
00072 
00073 private:
00074     void Init(int w, int h, int minVal, int maxVal, int val, int m)
00075     {
00076         mListener = 0;
00077         mListenerData = 0;
00078 
00079         mMinVal = minVal;
00080         mMaxVal = maxVal;
00081 
00082         SetBorderType(BEV_ETCHED);
00083 
00084         mScrollBar = new ScrollBar(this, m, m, w-46-2*m, h-2*m, true);
00085         mScrollBar->SetRange(maxVal-minVal + 10, 10);
00086         mScrollBar->SetNewPos(val - minVal);
00087         mScrollBar->ConnectTo(this);
00088         mScrollBar->SetScrollBarListener(this, 0);
00089 
00090         sprintf(mTxtBuf, "%d", val);
00091         mValueTxt = new StaticText(this, w-46-m, m, 46, h-2*m, mTxtBuf);
00092         mValueTxt->SetBorderType(BEV_ETCHED);
00093         mValueTxt->ConnectTo(this, L2R | R2R | T2T | B2B);
00094 
00095         // We already handle scaling ourself, so prevent others
00096         SetAllowChildScaling(false);
00097     }
00098 
00099     ValueScrollBarListener* mListener;
00100     void*                   mListenerData;
00101 
00102     ScrollBar*              mScrollBar;
00103     StaticText*             mValueTxt;
00104     int                     mMinVal, mMaxVal;
00105     char                    mTxtBuf[10];
00106 };
00107 
00108 }// namespace OglGui
00109 #endif

Generated on Fri Mar 19 09:31:40 2010 for ImpalaSrc by  doxygen 1.5.1