Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008 #ifndef __SP_GUI_TREEGADGET_H__
00009 #define __SP_GUI_TREEGADGET_H__
00010
00011
00012 #include "Base/spStandard.hpp"
00013
00014 #ifdef SP_COMPILE_WITH_GUI
00015
00016
00017 #include "GUI/spGUIGadget.hpp"
00018 #include "GUI/spGUIScrollViewBased.hpp"
00019
00020
00021 namespace sp
00022 {
00023 namespace gui
00024 {
00025
00026
00027 class GUITreeGadget;
00028
00029 enum ETreeFlags
00030 {
00031 GUIFLAG_LINES = 0x00000001,
00032 };
00033
00034
00035
00036
00037
00038
00039 class SP_EXPORT GUITreeItem
00040 {
00041
00042 public:
00043
00044 GUITreeItem();
00045 ~GUITreeItem();
00046
00047
00048
00049 void setParent(GUITreeItem* Parent);
00050
00051
00052
00053 inline void setText(const io::stringc &Text)
00054 {
00055 Text_ = Text;
00056 }
00057 inline io::stringc getText() const
00058 {
00059 return Text_;
00060 }
00061
00063 inline void setExpand(bool isExpand)
00064 {
00065 isExpand_ = isExpand;
00066 }
00067 inline bool getExpand() const
00068 {
00069 return isExpand_;
00070 }
00071
00072 inline void setVisible(bool isVisible)
00073 {
00074 isVisible_ = isVisible;
00075 }
00076 inline bool getVisible() const
00077 {
00078 return isVisible_;
00079 }
00080
00081 inline void setIcon(video::Texture* Icon)
00082 {
00083 Icon_ = Icon;
00084 }
00085 inline video::Texture* getIcon() const
00086 {
00087 return Icon_;
00088 }
00089
00090 inline GUITreeItem* getParent() const
00091 {
00092 return Parent_;
00093 }
00094
00095 private:
00096
00097 friend class GUITreeGadget;
00098
00099
00100
00101 void addChild(GUITreeItem* Child);
00102 void removeChild(GUITreeItem* Child);
00103
00104
00105
00106 io::stringc Text_;
00107 video::Texture* Icon_;
00108
00109 GUITreeItem* Parent_;
00110 std::list<GUITreeItem*> Children_;
00111
00112 bool isExpand_;
00113 bool isVisible_;
00114 bool isPicked_;
00115 bool hasExplorerSubDir_;
00116
00117 };
00118
00119
00120
00121
00122
00123
00128 class SP_EXPORT GUITreeGadget : public GUIGadget, public GUIScrollViewBased
00129 {
00130
00131 public:
00132
00133 GUITreeGadget();
00134 ~GUITreeGadget();
00135
00136
00137
00138 bool update();
00139 void draw();
00140
00147 GUITreeItem* addItem(const io::stringc &Text, GUITreeItem* Parent = 0, video::Texture* Icon = 0);
00148
00150 void removeItem(GUITreeItem* Item);
00151
00153 void clearItems();
00154
00160 void setExplorer(bool isExplorer);
00161
00162 io::stringc getExplorerFullPath(const GUITreeItem* Item) const;
00163
00165 inline GUITreeItem* getSelectedItem() const
00166 {
00167 return SelectedItem_;
00168 }
00169
00170 inline bool getExplorer() const
00171 {
00172 return isExplorer_;
00173 }
00174
00175 private:
00176
00177
00178
00179 static const s32 TREEITEM_EXPAND_SIZE = 15;
00180 static const s32 TREEITEM_HEIGHT = 17;
00181 static const s32 EXPANDICON_HALFSIZE = 5;
00182
00183 static const video::color ITEMPICK_COLOR_A;
00184 static const video::color ITEMPICK_COLOR_B;
00185
00186
00187
00188 void init();
00189 void clear();
00190
00191 void drawItem(GUITreeItem* Item, dim::point2di &Pos);
00192 void drawExpandIcon(const dim::point2di &Pos, bool isExpand);
00193
00194 bool updateItem(GUITreeItem* Item, dim::point2di &Pos);
00195 bool updateExpandIcon(const dim::point2di &Pos, GUITreeItem* Item, bool &isMouseOver);
00196
00197 bool createExplorerDirs(GUITreeItem* Item);
00198 bool addExplorerSubItem(GUITreeItem* Item, const void* FindFileDataRaw);
00199
00200
00201
00202 dim::point2di getItemsStartPos() const;
00203
00204
00205
00206 std::list<GUITreeItem*> ItemList_;
00207 GUITreeItem* SelectedItem_;
00208
00209 s32 MaxItemWidth_;
00210
00211 bool isExplorer_;
00212
00213 };
00214
00215
00216 }
00217
00218 }
00219
00220
00221 #endif
00222
00223 #endif
00224
00225
00226
00227