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_SCROLLAREA_H
00034 #define PG_SCROLLAREA_H
00035
00036 #include "pgwidget.h"
00037 #include "pgpoint.h"
00038
00048 class DECLSPEC PG_ScrollArea : public PG_Widget {
00049 public:
00050
00051 class SignalAreaChangedHeight : public PG_Signal2<PG_ScrollArea*, Uint16> {}
00052 ;
00053 class SignalAreaChangedWidth : public PG_Signal2<PG_ScrollArea*, Uint16> {}
00054 ;
00055
00062 PG_ScrollArea(PG_Widget* parent, const PG_Rect& r = PG_Rect::null);
00063
00064 ~PG_ScrollArea();
00065
00073 void SetShiftOnRemove(bool shiftx, bool shifty);
00074
00080 void ScrollTo(int x, int y);
00081
00087 void ScrollToWidget(PG_Widget* widget, bool bVertical = true);
00088
00094 void SetAreaWidth(Uint16 w);
00095
00101 void SetAreaHeight(Uint16 h);
00102
00107 inline Uint16 GetAreaWidth() {
00108 return my_area.w;
00109 };
00110
00115 inline Uint16 GetAreaHeight() {
00116 return my_area.h;
00117 };
00118
00122 void RemoveAll();
00123
00127 void DeleteAll();
00128
00132 Uint16 GetWidgetCount();
00133
00134 Uint16 GetScrollPosX();
00135
00136 Uint16 GetScrollPosY();
00137
00138 SignalAreaChangedHeight sigAreaChangedHeight;
00139
00140 SignalAreaChangedWidth sigAreaChangedWidth;
00141
00142 void AddChild(PG_Widget* child);
00143
00144 bool RemoveChild(PG_Widget* child);
00145
00146 PG_Widget* GetFirstInList();
00147
00153 void SetResizeParent(bool bRemove, bool bAdd);
00154
00155 protected:
00156
00157 void eventSizeWidget(Uint16 w, Uint16 h);
00158
00159 PG_Rect my_area;
00160
00161 bool my_shiftx;
00162
00163 bool my_shifty;
00164
00165 bool my_AddResizeParent;
00166
00167 bool my_RemoveResizeParent;
00168 };
00169
00170 #endif // PG_SCROLLAREA_H