00001
00015 #ifndef INC_MGUI_SCROLLBAR_H
00016 #define INC_MGUI_SCROLLBAR_H
00017
00018 #ifndef INC_MGUI_CTRL_H
00019 #include <mgui/ctrl.h>
00020 #endif
00021
00022 namespace MGUI {
00023
00024
00026 class CTRL_SCROLLBAR : public MGUI::CTRL {
00027 public:
00028
00029 enum ORIENTATION {
00030 ORIENTATION_Horizontal,
00031 ORIENTATION_Vertical
00032 };
00033
00035 CTRL_SCROLLBAR (
00036 );
00037
00039 virtual ~CTRL_SCROLLBAR (
00040 );
00041
00043 void Create (
00044 MGUI::LAYOUT_PANE_BASE& ParentPane,
00045 ORIENTATION orientation
00046 );
00047
00049 INT32 GetPosition (
00050 ) const;
00051
00053 void SetDelegateOnChangePosition (
00054 DELEGATE_VOID_INT32 delegate
00055 ) { m_DelegateOnChangePosition = delegate; }
00056
00059 void SetDelegateOnDrag (
00060 DELEGATE_VOID_INT32 delegate
00061 ) { m_DelegateOnDrag = delegate; }
00062
00064 void SetPosition (
00065 INT32 position,
00066 bool notify = true
00067 );
00068
00070 void SetValues (
00071 INT32 position,
00072 INT32 minvalue,
00073 INT32 maxvalue,
00074 INT32 pagesize,
00075 INT32 stepincrement = 1,
00076 INT32 pageincrement = 0,
00077 bool notify = true
00078 );
00079
00080 private:
00081 #ifndef GENERATING_DOXYGEN_OUTPUT
00082 DELEGATE_VOID_INT32 m_DelegateOnChangePosition;
00083 DELEGATE_VOID_INT32 m_DelegateOnDrag;
00084
00085 #ifdef X_NATIVE
00086 static void CB_Drag (Widget, CTRL_SCROLLBAR*, void*);
00087 static void CB_ValueChanged (Widget, CTRL_SCROLLBAR*, void*);
00088 #endif
00089
00090 void NotifyChangePosition (
00091 INT32 position
00092 ) { if (m_DelegateOnChangePosition != 0) m_DelegateOnChangePosition(position); }
00093
00094 void NotifyDrag (
00095 INT32 position
00096 ) { if (m_DelegateOnDrag != 0) m_DelegateOnChangePosition(position); }
00097
00098 CTRL_SCROLLBAR (const CTRL_SCROLLBAR&);
00099 CTRL_SCROLLBAR& operator= (const CTRL_SCROLLBAR&);
00100 #endif // GENERATING_DOXYGEN_OUTPUT
00101 };
00102
00103
00104 }
00105
00106 #endif // INC_MGUI_SCROLLBAR_H
00107