ElementInfo.h
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 #ifndef ROCKETDEBUGGERELEMENTINFO_H
00029 #define ROCKETDEBUGGERELEMENTINFO_H
00030
00031 #include <Rocket/Core/ElementDocument.h>
00032 #include <Rocket/Core/EventListener.h>
00033
00034 namespace Rocket {
00035 namespace Debugger {
00036
00037 typedef std::pair< Core::String, const Core::Property* > NamedProperty;
00038 typedef std::vector< NamedProperty > NamedPropertyList;
00039 typedef std::map< Core::PseudoClassList, NamedPropertyList > NamedPropertyMap;
00040
00045 class ElementInfo : public Core::ElementDocument, public Core::EventListener
00046 {
00047 public:
00048 ElementInfo(const Core::String& tag);
00049 virtual ~ElementInfo();
00050
00053 bool Initialise();
00055 void Reset();
00056
00058 void OnElementDestroy(Core::Element* element);
00059
00060 void RenderHoverElement();
00061 void RenderSourceElement();
00062
00063 protected:
00064 virtual void ProcessEvent(Core::Event& event);
00065
00066 private:
00067 void SetSourceElement(Core::Element* new_source_element);
00068 void UpdateSourceElement();
00069
00070 void BuildElementPropertiesRML(Core::String& property_rml, Core::Element* element, Core::Element* primary_element);
00071 void BuildPropertiesRML(Core::String& property_rml, const NamedPropertyList& properties);
00072 void BuildPropertyRML(Core::String& property_rml, const Core::String& name, const Core::Property* property);
00073
00074 void RemoveTrailingZeroes(Core::String& string);
00075
00076 bool IsDebuggerElement(Core::Element* element);
00077
00078 Core::Element* hover_element;
00079 Core::Element* source_element;
00080 };
00081
00082 }
00083 }
00084
00085 #endif