00001
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef __MYGUI_POINTER_MANAGER_H__
00024 #define __MYGUI_POINTER_MANAGER_H__
00025
00026 #include "MyGUI_Prerequest.h"
00027 #include "MyGUI_Instance.h"
00028 #include "MyGUI_IUnlinkWidget.h"
00029 #include "MyGUI_IWidgetCreator.h"
00030 #include "MyGUI_StaticImage.h"
00031 #include "MyGUI_IPointer.h"
00032
00033 namespace MyGUI
00034 {
00035
00036 class MYGUI_EXPORT PointerManager :
00037 public IUnlinkWidget,
00038 public IWidgetCreator
00039 {
00040 MYGUI_INSTANCE_HEADER( PointerManager )
00041
00042 public:
00043 void initialise();
00044 void shutdown();
00045
00046 public:
00048 bool load(const std::string& _file);
00049
00050 void _load(xml::ElementPtr _node, const std::string& _file, Version _version);
00051
00053 void setVisible(bool _visible);
00055 bool isVisible() const { return mVisible; }
00056
00060 void setPointer(const std::string& _name);
00062 void resetToDefaultPointer();
00063
00065 const std::string& getDefaultPointer() { return mDefaultName; }
00067 void setDeafultPointer(const std::string& _value);
00068
00069 const std::string& getLayerName() { return mLayerName; }
00070 void setLayerName(const std::string& _value);
00071
00073 IPointer* getByName(const std::string& _name) const;
00074
00075
00080 delegates::CMultiDelegate1<const std::string &>
00081 eventChangeMousePointer;
00082
00083
00084 #ifndef MYGUI_DONT_USE_OBSOLETE
00085
00086 MYGUI_OBSOLETE("use : void PointerManager::setVisible(bool _visible)")
00087 void show() { setVisible(true); }
00088 MYGUI_OBSOLETE("use : void PointerManager::setVisible(bool _visible)")
00089 void hide() { setVisible(false); }
00090 MYGUI_OBSOLETE("use : bool PointerManager::isVisible()")
00091 bool isShow() { return isVisible(); }
00092
00093 #endif // MYGUI_DONT_USE_OBSOLETE
00094
00095 private:
00096 void _unlinkWidget(Widget* _widget);
00097
00098
00099 virtual Widget* baseCreateWidget(WidgetStyle _style, const std::string& _type, const std::string& _skin, const IntCoord& _coord, Align _align, const std::string& _layer, const std::string& _name);
00100
00101
00102 virtual void _destroyChildWidget(Widget* _widget);
00103
00104
00105 virtual void _destroyAllChildWidget();
00106
00107 void Update();
00108
00109 void notifyFrameStart(float _time);
00110 void notifyChangeMouseFocus(Widget* _widget);
00111 void setPointer(const std::string& _name, Widget* _owner);
00112
00113 private:
00114
00115 VectorWidgetPtr mWidgetChild;
00116
00117 std::string mDefaultName;
00118 IntPoint mPoint;
00119 bool mVisible;
00120 std::string mLayerName;
00121 std::string mSkinName;
00122
00123 Widget* mWidgetOwner;
00124 StaticImage* mMousePointer;
00125 IPointer* mPointer;
00126 std::string mCurrentMousePointer;
00127 };
00128
00129 }
00130
00131 #endif // __MYGUI_POINTER_MANAGER_H__